關於協調式 Replicat

在協調模式中,Replicat 的運作方式如下:

傳統模式與協調模式之間的差異在於 Replicat 在協調模式中為多執行緒。在單一 Replicat 執行處理中,多個繫線會獨立讀取歷程檔,並以平行方式套用交易。每個執行緒都會處理其指派之工作負載的篩選、對應、轉換、SQL 建構以及錯誤處理。協調器繫線會協調執行緒之間的交易,以說明執行緒之間的相依性。

來源交易可以跨 CR 處理進行分割,因此不會維護來源交易總計的完整性。CR 處理所處理的異動部分是以已確認順序完成,但所有 CR 處理的整個異動並未完成。

協調式 Replicat 可讓使用者定義的工作負載分割,以便同時套用大量交易。此外,它會使用 THREADRANGE 分割,自動協調需要協調的交易執行,例如 DDL 和主索引鍵更新。這類交易會以完全同步化目標中的一個交易形式執行:它會等到所有先前的交易都先套用,而且此屏障交易之後的所有交易都必須等到套用此屏障交易為止。

協調式 Replicat 只需要一個參數檔,無論繫線數目為何。您可以使用 MAP 敘述句中的 THREAD 或 THREADRANGE 選項,指定處理這些物件之交易的繫線數目,以及在建立 Replicat 群組時指定繫線數目上限。

此圖說明「協調式 Replicat」的架構。

coordinatedreplicat.jpg 的描述如下

如圖所示,「協調式 Replicat」包含下列兩個處理作業:

關於障礙異動

障礙異動會在協調式 Replicat 組態中自動管理。障礙異動是需要跨執行緒協調的異動。範例包括 DDL 敘述句、包含主索引鍵更新的交易,以及某些 EVENTACTIONS 動作。

或者,您可以透過使用 ` COORDINATED keyword in a MAP statement. One use case for this would be force a SQLEXEC` 的方式,強制將其他交易視為屏障交易來執行,這類似於序列執行。如果結果可能變得不明確,除非目標的狀態在所有交易之間一致,否則這可能會有幫助。

注意:根據 THREADRANGE 分割對應的表格時,協調式 Replicat 不會對非屏障交易進行相依性計算。它依賴指定的 THREADRANGE 資料欄來計算雜湊值。它會根據雜湊值分割傳入資料,並將符合此雜湊值的所有記錄傳送至相同執行緒。

如何處理障礙異動

所有執行緒會在屏障交易開始時收斂並等待。障礙異動會暫停,直到其他執行緒到達其開始位置為止。如果有任何繫線已經在處理屏障交易的一部分,這些繫線就會執行倒回。群組的交易 (例如由 BATCHSQL 或 ` GROUPTRANSOPS` 參數控制的交易) 也會倒回並重新套用,直到它們到達屏障交易的開頭為止。

所有執行緒也會合併,並在障礙異動之後的下一個異動開始時等待。屏障交易前後的兩個同步點,確保中繼資料作業和 EVENTACTIONS 動作都以與資料作業相關的適當順序進行。

在障礙異動開始時同步化執行緒之後,執行緒會在 MAP 陳述式中指定的所有執行緒中具有最低執行緒 ID,然後繼續跨執行緒平行處理,以序列方式處理障礙異動。您可以在 Replicat 參數檔中指定 USEDEDICATEDCOORDINATIONTHREAD 參數,強制透過一律為繫線 0 的特定繫線處理障礙異動。