標籤:
初始化訂閱主要是由分發代理分發和應用快照代理之前產生的快照,所以最佳化的主體是分發代理。
1、初始化訂閱
- 首先在本地建立一個訂閱,發行伺服器、散發者和訂閱伺服器都在同一台伺服器上,僅為了測試生產環境不要這樣做
需要注意幾點:
- 快照代理會在快照產生的初始階段使用鎖,雖然時間很短,但是影響範圍較大。
- 在快照產生過程中,不能對錶的結構變更。
2.最佳化參數測試
- 建立一個分發代理設定檔,命名為“分發代理最佳化參數 ”
- 尋找這個代理設定檔的profile_id
SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =3 或者 EXEC sp_help_agent_profile @agent_type= 3
EXEC sp_change_agent_parameter @profile_id = 18, @parameter_name = ‘MaxBcpThreads‘, @parameter_value = 4 EXEC sp_change_agent_parameter @profile_id = 18, @parameter_name = ‘BcpBatchSize‘, @parameter_value = 100000 EXEC sp_change_agent_parameter @profile_id = 18, @parameter_name = ‘PollingInterval‘, @parameter_value = 500000
- 最佳化後訂閱庫產生測試結果,從測試結果上看並沒有明顯的最佳化。MaxBcpThreads並沒有實現多線程的資料匯入,後台查詢也只有一個會話在執行bulk in操作,BcpBatchSize對參數影響較小,建議設定的大一些;另外兩個參數不影響訂閱資料庫的產生效率。其實訂閱庫產生是整個過程的效能瓶頸所在,如果能使用多線程還是不錯的解決方案,希望看到部落格的同學有好方法提供一下。
SQL Server提高事務複製效率最佳化(三)訂閱初始化最佳化