校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > SqlServer 復制中將大事務分成小事務分發的方法

SqlServer 復制中將大事務分成小事務分發的方法

熱門標簽:千呼電話機器人可以試用嗎 家庭農場地圖標注名稱怎樣起名 安卡拉地圖標注app 零成本地圖標注賺錢 我要地圖標注數量有限制嗎 互聯網電話外呼系統 電話機器人怎么代理商 400電話辦理泰安 電銷需要外呼系統嗎

在sql server 復制中,當在發布數據庫執行1個大事務時,如一次性操作 十萬或百萬以上的數據。當操作數據在發布數據庫執行完成后 ,日志讀取器代理將掃描事務日志,一次性傳遞到分發數據庫中。若上個事務未傳遞完成,連續執行多個事務,日志讀取器代理將掃描日志中多個事務同時傳遞到分發數據庫中,默認最大掃描500個事務。如果執行多次上百萬或千萬的數據將堵塞很久。

日志讀取器代理可配置將大事務劃分為多個小事務進行傳遞到分發數據庫中,分發隊列則按照小事務分發到訂閱數據庫中,這樣數據就很快同步!

在沒改代理參數之前,本人執行1次插入30萬的數據到發布表中。插入完成后,監控發布到分發的記錄如下:

可以看到,這1個事務的命令都得一次傳遞完才能分發,而分發又消耗時間,這里等待太久影響事務的實時性。
如果還有其他事務,默認500(參考參數:-ReadBatchSize),也將一起傳遞,耗時較長。

現在更改參數,掃描到 1000 左右的命令就即時分發,需要設置如下參數:
-MaxCmdsInTran number_of_commands

注:該參數只能添加到日志讀取器代理中,在代理配置文件沒有此參數的設置。

添加后重啟 日志讀取器代理。

再次插入 30 萬的數據!~到監視器查看

可以看到,命令達到 1000 左右就進行分發了,此時查看訂閱數據庫,數據也同步過來了,這樣就省去了較多掃描命令的時間。
更詳細查看每個事務的命令數,如下:

SELECT top 10 A.xact_seqno,A.entry_time,COUNT(*) AS cmds
FROM distribution.dbo.MSrepl_transactions A(NOLOCK) 
INNER JOIN distribution.dbo.MSrepl_commands B(NOLOCK) 
ON A.xact_seqno=B.xact_seqno
GROUP BY A.xact_seqno,A.entry_time
ORDER BY cmds DESC

這個參數雖好,但是也可能引起數據的一致性。

如:

在發布更新了一批數據,但是訂閱查詢時卻有不同。

分發事務遇到沖突或者死鎖,也導致這部分的數據不一致。

參考:復制日志讀取器代理

標簽:來賓 新鄉 東營 大同 池州 文山 濱州 黃山

巨人網絡通訊聲明:本文標題《SqlServer 復制中將大事務分成小事務分發的方法》,本文關鍵詞  SqlServer,復制,中將,大,事務,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SqlServer 復制中將大事務分成小事務分發的方法》相關的同類信息!
  • 本頁收集關于SqlServer 復制中將大事務分成小事務分發的方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 琼结县| 靖州| 且末县| 张家港市| 凤翔县| 萍乡市| 和平县| 曲水县| 公安县| 婺源县| 恩平市| 石狮市| 中山市| 中阳县| 句容市| 宜宾市| 上杭县| 格尔木市| 革吉县| 阳山县| 库尔勒市| 昌邑市| 汉源县| 密云县| 芜湖市| 天等县| 甘肃省| 泾阳县| 泾川县| 辽中县| 合作市| 静宁县| 凤山县| 云和县| 嵩明县| 临高县| 子长县| 来宾市| 中山市| 来宾市| 平塘县|