SQL Server提升事務複製效率優化(四)修改數據同步過程優化

一、原理
      我說的數據修改同步過程指的是在快照生成完畢,分發代理將快照應用於訂閱服務器完成訂閱服務器初始化後,發佈服務器後續的更改同步到訂閱服務器過程,這也就是咱們經常關注的延遲。此過程主要涉及兩個代理,分發代理和日誌讀取代理,由於咱們使用的是推送訂閱,因此這兩個代理都工做在分發數據庫上。首先,日誌讀取代理讀取發佈事務日誌,並表示任何INSERT、UPDATE以及DELETE語句,而後將這些事務定時將批量複製到分發服務器的分發數據庫中。分發庫中存儲着事務和命令,每一個事務以多條命令組成。分發代理順序分發分法庫中的事務,以邏輯命令(SQL語句)方式在訂閱庫上執行。流程圖見下:
     優化這兩個代理主要考慮從兩方面考慮,一方面是縮短每一個批次的間隔,一方面須要在小間隔的狀況下增長代理處理的性能,這兩個方面是相關聯的,因此要一塊兒修改才能起做用。
2.複製延遲測試
  • 查看日誌讀取代理配置文件的默認參數:
  • 查看分發代理配置文件的默認參數:
SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =3
SELECT * FROM MSagent_parameters WHERE profile_id= 4

  • 經過跟蹤令牌方式測試複製延遲時間

3.代理參數優化測試
  • 新建日誌讀取代理參數配置文件,命名爲「日誌讀取代理參數優化參數 」
  • 日誌讀取代理參數優化
-- 查詢該代理的profile_id   
SELECT * FROM msdb.dbo .MSagent_profiles WHERE agent_type =2
  
EXEC sp_change_agent_parameter @profile_id = 20,
    @parameter_name = 'ReadBatchSize', @parameter_value = 2000    
   
EXEC sp_change_agent_parameter @profile_id = 20,
    @parameter_name = 'PollingInterval', @parameter_value = 1
新建分發參數配置文件,命名爲「分發代理參數優化參數」
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = 'PollingInterval', @parameter_value = 1
   
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = 'CommitBatchSize', @parameter_value = 1000
   
EXEC sp_change_agent_parameter @profile_id = 18,
    @parameter_name = 'CommitBatchThreshold', @parameter_value = 10000 
  • 優化參數後測試結果(記得更改代理配置文件後要重啓代理生效),效果立竿見影,可是不是峯值狀況。咱們在生產上應用的效果很好,高峯值時也能保證很低的延遲。對於CommitBatchSize和CommitBatchThreshold的參數設置評估方法,CommitBatchThreshold取DML操做數/s上限做爲設置,CommitBatch就是CommitBatchThreshold/10~CommitBatchThreshold/5。
 
相關文章
相關標籤/搜索