測試數據表量1500w+,使用初始化默認的快照代理參數,復制的三個過程包括快照初始化,訂閱初始化和數據修改復制,主要對快照代理、分發代理、日志讀取代理分別作了參數優化,並給出優化前后的對照實驗測試。
1.初始化快照
- 在復制監視器中找到快照代理位置,右鍵,選擇代理配置文件:
- 查看默認配置:
- 初始化快照時間:
2.優化參數測試
- 新建一個快照代理配置文件,命名為“快照代理優化參數 ”
- 查找這個代理配置文件的profile_id
use msdb SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =1 或者 EXEC sp_help_agent_profile @agent_type= 1

這里的agent_type注解如下
代理的類型:
1 = 快照代理
2 = 日志讀取器代理
3 = 分發代理
4 = 合並代理
9 = 隊列讀取器代理
- 修改配置文件,這里新增了MaxBcpThreads,MaxNetworkOptimization參數,修改了BcpBatchSize,HistoryVerboseLevel參數,對於性能提高最大的參數就是MaxBcpThreads,其他參數調整對性能調高不大,但MaxNetworkOptimization參數一定要調整到1,可以減少傳輸到訂閱服務器上不必要的操作。
USE msdb EXEC sp_add_agent_parameter @profile_id = 17, @parameter_name = 'MaxBcpThreads', @parameter_value = 4 EXEC sp_add_agent_parameter @profile_id = 17, @parameter_name = 'MaxNetworkOptimization', @parameter_value = 1 EXEC sp_change_agent_parameter @profile_id = 17, @parameter_name = 'BcpBatchSize', @parameter_value = 200000 EXEC sp_change_agent_parameter @profile_id = 17, @parameter_name = 'HistoryVerboseLevel', @parameter_value = 1
- 調整后的參數:
- 優化后測試結果,時間大大減少。但是如果在有業務負載同時生成快照,那么資源消耗很大,建議合理調整參數,不要設置太大並發,用默認配置已經有很高的I/O了。
