複製過程中的大批量更新

2021-06-17 00:23:14 字數 1404 閱讀 6570

對於大批量的更新操作 又涉及同步,如果可以:

a) 最好是使用最小粒度的維護,可以減少每次維護的工作量,也減少備份 (建立作業job批量操作,定期進行刪除)

b) 如果是急需,又涉及到同步,那麼可以把同步拿掉進行刪除,完成之後再建上(避免出現線上阻塞,影響效能。同步會同步大量日誌,更新完成之後再重建同步使用的不是日誌同步而是快照,所以速度要比用日誌同步快很多。)

監控:可以用 sp_who2  或者 可以通過查詢 sysprocess 獲取是否有阻塞,在更新的同時,檢視同步的監控通常是看sqlmonitor,以便於對當前的情況進行隨時的調整。

1. 我們可以通過以下查詢看到目前有多少的命令沒有分發出去,如果資料量特別大,可以稍等,分發相對少一些的時候再來進行操作。

use

distribution

goselect

count(*) from dbo.msrepl_commands with(nolock)

或者就是複製監視器中的未分發命令來進行檢視

2. 如果 logreader的日誌顯示當前正在進行大量資料的讀取,那麼表示之前有大量的資料變更,如果我們正在執行分批更新的話,那麼應該先停止,這通常表明我們的分批可能不太合理,導致日誌讀取器一直在讀取事務

sqlmonitor 會對伺服器造成比較大的影響。

以下指令碼可以檢視當時庫有多少同步,如果知道表,可以直接查詢這個表同步到什麼地方,同步到了幾處。

use

test

goselect sct .dest_db ,srt. dest_owner , srt. name , sct. srvname, pub.pubid , srt .dest_table --

,srt.artid ,sct.artid

from syspublications as pub with

(nolock)

inner

join sysarticles as srt with( nolock) on pub .pubid =

srt .pubid

inner

join syssubscriptions sct with (nolock) on srt.artid =

sct.artid

group

by sct. srvname , pub. pubid , srt.dest_owner , srt.name , srt.dest_table ,sct .dest_db

本文由www.qvodq.com站長提供

mysql大批量更新資料

大批量的更新資料如果再使用傳統的 update 方法一條一條的更新,效率是很慢的,而且效能差,也很容易造成阻塞。1 使用mysql 自有的語句構建批量更新 update tble set price case id when 16 then 7.6 when 19 then 8.86 when 20...

Hibernate事務中更新大批量資料的處理

批量更新是指在乙個事務中更新大批量資料,批量刪除是指在乙個事務中刪除大批量資料。以下程式直接通過hibernate api批量更新customers表中年齡大於零的所有記錄的age欄位 tx session.begintransaction iterator customers session.fi...

oracle 更新大批量資料變更步驟

生產環境中遇到更新或者刪除大批量資料的時候,不能直接進行操作,要批量進行。1 獲取要進行更新的資料的主鍵,2 建立臨時表並將獲取的資料主鍵匯入到建立!bin sh created by yangql on 2011 11 23 parameters home oracle profile ora u...