Sql-Server
如果在發布者數據庫上執行大量更新/刪除查詢,事務複製是否會中斷
對於這些規格:
- 發布者:(產品 OLTP DB 伺服器)SQL Server 2005,數據庫大小:220 GB 也充當分發者
- 訂閱者(Prod 報告數據庫伺服器):SQL Server 2005,數據庫被複製並且目前處於同步狀態。
現在,根據年度活動,將在 OLTP 發布者數據庫上執行一個腳本來刪除超過 3516009 條記錄。
請建議這是否中斷
transaction replication
?或者有什麼方法可以阻止一個,因為設置它很乏味?此外,兩年前做過類似的事情,我們只有錯誤為
程序無法在 ‘xxxxxx’ 上執行 ‘sp_replcmds’。" “狀態:2,程式碼:0,文本:‘超時已過期’” “等待記憶體資源執行查詢時發生超時。” “代理 ‘xxx ’ 出錯後重試。嘗試了 0 次重試。有關詳細資訊,請參閱作業文件夾中的代理作業歷史記錄。” “由於停止作業請求,該步驟被取消(停止)”"
當時所做的修復是增加日誌讀取器代理的查詢超時時間,並將其從預設值 1800 設置為最大 65333 秒。
由於數據庫在過去 2 年中不斷增長,我們想知道,如果上述修復仍然很好,還是我們應該採取任何措施?
此外,如果複製中斷,什麼是恢復它的最快方法,因為設置整個事情(尤其是 SQL Server 2005)會導致報告伺服器出現大中斷?
聽起來您正試圖在單個事務中執行刪除操作。在這種情況下,答案是*“是的,它很可能會破裂”。*
即使沒有複製,在單個批次中執行如此大的操作也是一個壞主意。您最好循環較少數量的刪除 - 它更快且性能問題更少。如果你這樣做,答案是,“不,這不應該是一個問題。”
這是一個例子
Declare @keepGoing bit set @keepGoing = 1 while @keepGoing =1 begin if (select top 1 from someTable) is null set @keepGoing = 0 else delete sometable where ID in (select top 10000 ID from sometable) end