系統存在效能問題
複寫效能可按照下列五種維度量度:
延遲:資料變更要在複寫拓撲的節點之間傳播所需要花費的時間。
輸送量:系統在一段長時間可承受的複寫活動量 (以某段時間傳遞的命令數量來測量)。
並行:在系統上可同步操作的複寫處理數量。
同步處理的持續時間:完成給定同步處理所需要的時間長度。
資源消耗:用來作為複寫處理結果的硬體和網路資源。
延遲和輸送量與交易式複寫關係密切,因為在交易式複寫上建立的系統通常需要低度延遲和高輸送量。並行和同步處理的持續時間與合併式複寫關係密切,因為在合併式複寫上建立的系統通常有大量的訂閱者,同時發行者可與這些訂閱者擁有許多並行的同步處理。
設定複寫後,建議您開發效能基準線,它可讓您決定對應用程式和拓撲之特定工作負載的複寫操作方式。使用「複寫監視器」和「系統監視器」來決定下列複寫效能五種維度的特定數目:建立基準線數目後,您可以在「複寫監視器」中設定臨界值和警示。如需詳細資訊,請參閱<使用複寫監視器監視效能>、<在複寫監視器中設定臨界值和警告>和<為複寫代理程式事件使用警示>。如需可用於疑難排解複寫之工具的詳細資訊,請參閱<疑難排解工具 (複寫)>。
說明與使用者動作
複寫效能受到下列因素的影響:
伺服器和網路硬體
資料庫設計
散發者組態
發行集設計與選項
篩選設計與使用
訂閱選項
快照集選項
代理程式參數
維護
如遇到效能問題,建議您閱讀下面幾節中的建議,並在您能影響遇到問題的地方套用變更。例如:
如果您正使用合併式複寫,同時您注意到在「複寫監視器」中,單一篩選的發行項佔用了很大一部分的同步處理時間:請檢查是否使用適當的篩選選項,以及是否索引了篩選的資料行。
如果您正使用交易式複寫,並在已發行資料表上執行批次作業時遇到高度延遲:請考慮複製預存程序的執行,以在「訂閱者」端執行批次作業。
所有類型的複寫
應對所有類型的複寫進行以下考量。如需詳細資訊,請參閱<提升一般複寫效能>。
伺服器和網路
設定配置給 MicrosoftSQL Server Database Engine 的最小和最大記憶體數量。
確保適當配置資料庫資料檔案和記錄檔。針對複寫相關的所有資料庫交易記錄,使用個別的磁碟機。
考慮為複寫用伺服器加入記憶體,特別是散發者。
使用多處理器電腦。
使用高速網路。若網路太慢,請指定適當的網路設定與代理程式參數。如需詳細資訊,請參閱<低速網路將引起問題>。
資料庫設計
依照資料庫設計的最佳作法。
考慮設定 READ_COMMITTED_SNAPSHOT 資料庫選項。
小心使用觸發程序的應用程式邏輯。
限制使用 Large Object (LOB) 資料類型。
發行集設計與選項
只發行需要的資料。
透過發行集設計和發行集行為,將衝突最小化。
明智使用資料列篩選。
減少複寫代理程式的詳細資訊層級,僅初始化測試、監視或偵錯時除外。
訂閱選項
有大量訂閱者時,使用提取訂閱。
若訂閱者嚴重落後,將考慮訂閱重新初始化。
快照集選項
視需要且必須在離峰時間才執行快照集代理程式。
為發行集使用單一快照集資料夾。
將快照集資料夾置於散發者本機磁碟機,且該散發者並非用來儲存資料庫或記錄檔。
在訂閱者端建立訂閱資料庫時,考慮指定簡單或大量記錄復原模式。
對於低頻寬網路,請考慮在抽取式媒體上使用替代快照集資料夾和壓縮快照集。
使用「快照集代理程式」、「合併代理程式」和「散發代理程式」的 –MaxBCPThreads 參數。使用「散發代理程式」和「合併代理程式」的 –UseInprocLoader 參數。
交易式複寫
應對交易式複寫進行以下考量。如需詳細資訊,請參閱<增強交易式複寫效能>。
資料庫設計
- 將應用程式設計中的交易量最小化。
散發者組態
在專用伺服器上設定散發者。
為散發資料庫設定適當的大小。
發行集設計與選項
批次更新到已發行資料表時,複寫預存程序執行。
跨多發行集傳播發行項。
訂閱選項
如果您在同一「發行者」端具有多個發行集,請使用獨立代理程式而非共用代理程式 (這是預設行為)。
連續執行代理程式來代替非常頻繁的排程執行。
代理程式參數
將 -MaxCmdsInTran 參數用於「記錄讀取器代理程式」。
使用「散發代理程式」的 –SubcriptionStreams 參數。
為記錄讀取器代理程式增加 -ReadBatchSize 參數的值。
為散發代理程式增加 -CommitBatchSize 參數的值。
為記錄讀取器代理程式減少 -PollingInterval 參數的值。
合併式複寫
應對合併式複寫進行以下考量。如需詳細資訊,請參閱<增強合併式複寫效能>。
資料庫設計
資料列篩選與聯結篩選中使用的索引資料行。
考慮包含了「大型物件」(LOB) 資料類型的過度正規化資料表。
發行集設計
使用 90RTM 的發行集相容性層級 (SQL Server 2005) 或更新版本。
使用適當的發行集保留設定。
使用只在發行者端變更之資料表的僅限下載發行項。
篩選設計與使用
限制資料列篩選子句的複雜性。
使用有參數化篩選的預先計算的資料分割 (預設為使用這項功能)。
如果資料已篩選,但是未在使用者之間共用,則使用非重疊資料分割。
不要建立複雜的聯結篩選階層。
如果邏輯允許,則將 join_unique_key 選項設定為 1。
預先計算的資料分割考量
當批次包含大量資料變更時,請小心設計應用程式。務必先變更聯結篩選中父資料表的資料,然後再進行子資料表中對應的變更。
當批次包含大量資料變更時,請減少批次中的變更次數,並在批次之間執行合併代理程式。如果無法這麼做,請增加複寫的 generation_leveling_threshold 值。
訂閱考量因素
- 交錯訂閱同步處理排程。
代理程式參數
- 如果訂閱透過快速連接進行同步處理,且變更從「發行者」和「訂閱者」端送出,請使用「合併代理程式」的 –ParallelUploadDownload 參數。
快照集選項
在產生初始快照集之前,於大型資料表上建立 ROWGUIDCOL 資料行。
預先產生快照集及/或允許訂閱者在第一次同步處理時,要求快照集的產生與套用。
維護
偶爾重新索引合併式複寫系統資料表。
使用複寫監視器內的 [同步處理記錄] 索引標籤監視同步處理效能。