一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Sql Server - SqlServer 復制中將大事務分成小事務分發的方法

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

2020-05-13 16:00MSSQL教程網 Sql Server

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

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

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

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

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

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

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

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

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

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

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

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

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

?
1
2
3
4
5
6
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 復制中將大事務分成小事務分發的方法

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

如:

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 五月最新女厕所高跟嘘嘘 | 日本黄大片影院一区二区 | 四虎影院新地址 | 欧美精品久久久久久久影视 | 亚洲成人影院在线观看 | 精品亚洲欧美中文字幕在线看 | 国产良心大作白丝精厕 | 国语刺激对白勾搭视频在线观看 | 边摸边吃奶又黄激烈视频韩国 | 亚洲人成激情在线播放 | 国产免费看黄的私人影院 | 亚洲国产精品自产在线播放 | 韩国一区二区三区 | 日韩精品首页 | 男同志与动人物zozotv | 嫩草影院地址一地址二 | 欧美性理论片在线观看片免费 | 麻豆婷婷 | 国产成人精品一区二三区 | 狠狠狠地啪香蕉 | 热99re国产久热在线 | 国产午夜精品福利 | 暖暖视频日本 | 校草让我脱了内裤给全班看 | 日本黄色影院 | 男人v天堂 | 1024亚洲精品国产 | 久久视热频国产这里只有精品23 | 三级小说网站 | chinesespank打屁股 | 黄动漫软件车车好快的车车 | 99热久久国产精品这里 | 久久噜国产精品拍拍拍拍 | 无人区在线观看免费国语完整版 | 欧美日韩国产成人精品 | 国产精品欧美日韩一区二区 | 校园全肉高h湿一女多男 | 婷婷色在线播放 | 国产福利不卡 | 成年人在线视频免费观看 | 日本人成大片在线 |