BATCHSQL

有效對象

Replicat

說明

使用 BATCHSQL 參數可提升 Replicat 的效能。BATCHSQL 會讓 Replicat 將類似的 SQL 敘述句組織成陣列,並以加速的速率加以套用。Replicat 在正常模式中,一次套用一個 SQL 敘述句。

BATCHSQL 對下列項目有效:

何時使用 BATCHSQL

使用 BATCHSQL 之前,請先使用平行 Replicat,然後查看是否可減輕任何 Replicat 延遲。如果沒有,請嘗試啟用 BATCHSQL。如果啟用 BATCHSQL 可提升效能,請將它保持為啟用狀態、停用它,並考慮 Replicat 的其他替代調整練習,例如確保所有表格都有主索引鍵或唯一索引鍵、有限的大型批次作業,以及確保平行 Replicat 有大量的記憶體和 IO 以獲得最佳效能,這表示 Replicat 沒有 IO 繫結或記憶體界限。

當 Replicat 處於 BATCHSQL 模式時,較大資料列變更的效能將會較小。在每一資料列變更 100 個位元組的資料時,已知 BATCHSQL 可將 Replicat 的效能提升高達 300%,但實際效能效益會因混合作業而有所不同。每一資料列大約有 5,000 個位元組的資料變更,使用 BATCHSQL 的優點就會減少。

使用限制

被視為異常狀況的 SQL 敘述句包括:

Replicat 在批次模式中遇到異常狀況時,會倒回批次作業,然後嘗試以下列方式套用異常狀況,一律維護交易完整性:

完成處理例外情況後,Replicat 會恢復 BATCHSQL 模式。

表格 9 Replicat 模式

來源異動 (假設相同的表格與欄位清單) 正常模式的 Replicat 交易 BATCHSQL 模式下的 Replicat 交易 來源模式中的 Replicat 交易

交易 1:

` 插入 `

` 刪除 `

Transaction2:

` 插入 `

` 刪除 `

交易 3:

` 插入 `

` 刪除 `

` 插入 `

` 刪除 `

` 插入 `

` 刪除 `

` 插入 `

` 刪除 `

` 插入 ` (x3)

` 刪除 ` (x3)

交易 1:

` 插入 `

` 刪除 `

交易 2:

` 插入 `

` 刪除 `

交易 3:

` 插入 `

` 刪除 `

BATCHSQL 的運作方式

在 BATCHSQL 模式中,Replicat 會將類似的 SQL 敘述句組織成記憶體佇列內的批次,然後在一個資料庫作業中套用每個批次。批次包含會影響相同表格、作業類型 (插入、更新或刪除) 及資料欄清單的 SQL 敘述句。例如,下列各項皆為批次:

控制快取的敘述句數目

MAXSQLSTATEMENTS 參數可控制快取的敘述句數目。如需詳細資訊,請參閱 MAXSQLSTATEMENTS 。舊的敘述句會使用最近使用的最低演算法進行回收。批次會根據指定的臨界值執行 (請參閱)。

預設

已停用 (一般 Replicat 模式的處理作業)

語法

BATCHSQL
[CHECKUNIQUEKEYS | NOCHECKUNIQUEKEYS]
[THREADS (<threadID>[, <threadID>][, ...][, <thread_range> [,<thread_range>][, ...])]
[CHECKUNIQUEKEYS NOCHECKUNIQUEKEYS]

適用於 Replicat。

CHECKUNIQUEKEYS 會在遇到具有唯一索引鍵的表格略過 BATCHSQL 處理時強制排清。這樣可確保在唯一索引鍵變更時,會維護原始的作業順序。

預設值為 NOCHECKUNIQUEKEYS,當遇到具有唯一索引鍵的表格允許 BATCHSQL 處理繼續時,不會強制清除。

THREADS (<threadID>[, <threadID>][, ...][, <thread_range>[, <thread_range>][, ...])

適用於 BATCHESPERQUEUE、BATCHTRANSOPS 和 BYTESPERQUEUE。將這些選項套用到協調式 Replicat 的指定執行緒或執行緒。

<threadID>[, <threadID>][, ...]

指定繫線 ID 或以逗號分隔的繫線清單,格式為 threadID, threadID, threadID。

[, <thread_range>[, <thread_range>][, ...]

以 threadIDlow-threadIDhigh 格式或以逗號分隔的範圍清單 (格式為 threadIDlow-threadIDhigh,threadIDlow-threadIDhigh) 來指定繫線範圍。

允許使用這些格式的組合,例如 threadID、threadID、threadIDlow-threadIDhigh。