SqlServer 複製中將大事務分成小事務分發

2021-09-07 16:40:01 字數 1449 閱讀 8020

原文:

sqlserver 複製中將大事務分成小事務分發

在sql server 複製中,當在發布資料庫執行1個大事務時,如一次性操作 十萬或百萬以上的資料。當運算元據在發布資料庫執行完成後 ,日誌讀取器**將掃瞄事務日誌,一次性傳遞到分發資料庫中。若上個事務未傳遞完成,連續執行多個事務,日誌讀取器**將掃瞄日誌中多個事務同時傳遞到分發資料庫中,預設最大掃瞄500個事務。如果執行多次上百萬或千萬的資料將堵塞很久。

日誌讀取器**可配置將大事務劃分為多個小事務進行傳遞到分發資料庫中,分發佇列則按照小事務分發到訂閱資料庫中,這樣資料就很快同步!

在沒改**引數之前,本人執行1次插入30萬的資料到發布表中。插入完成後,監控發布到分發的記錄如下:

可以看到,這1個事務的命令都得一次傳遞完才能分發,而分發又消耗時間,這裡等待太久影響事務的實時性。

現在更改引數,掃瞄到 1000 左右的命令就即時分發,需要設定如下引數:

注:該引數只能新增到日誌讀取器**中,在**配置檔案沒有此引數的設定。

新增後重啟 日誌讀取器**。

再次插入 30 萬的資料!~到監視器檢視

可以看到,命令達到 1000 左右就進行分發了,此時檢視訂閱資料庫,資料也同步過來了,這樣就省去了較多掃瞄命令的時間。

更詳細檢視每個事務的命令數,如下:

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

如:在發布更新了一批資料,但是訂閱查詢時卻有不同。

分發事務遇到衝突或者死鎖,也導致這部分的資料不一致。

參考:複製日誌讀取器**

sql server複製程式設計

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,olectrls,sqlmergxlib tlb,stdctrls,buttons type tfor...

複製(1) SQLServer 複製簡介

sqlserver的複製技術最少從sqlserver2000時代已經出現,當初是為了分布式計算,不是為了高可用。但是到了今天,複製也成為了一種高可用技術,並且被廣泛使用。很多問題都通過複製得以解決。複製說白了就是一種發布 訂閱模式,但是這種模式並不容易理解。下面介紹一下複製技術的一些概念。提醒一下,...

sqlserver中將查詢結果拼接成字串

for xml path param 將查詢結果以xml格式輸出 select id,name from table1 for xml path path後面沒有引數時,每行資料被預設標籤包裹,每行列資料被被其列名標籤包裹。結果如下 1 holab 2name1 每行資料最外面包裹的標籤由path的...