全部產品
Search
文件中心

ApsaraDB RDS:調整RDS MySQL WRITESET相關參數

更新時間:Jul 03, 2024

您可以通過開啟WRITESET模式,設定binlog_transaction_dependency_trackingtransaction_write_set_extraction參數來控制事務的衝突檢測機制,以便提高備庫回放並行度,降低主從延遲。

WRITESET簡介

MySQL預設的基於主庫組提交來判斷事務衝突的COMMIT_ORDER模式,在一定程度上會受到主庫並發度的影響。WRITESET模式解決了這個問題,當該模式開啟時,每個事務提交時,會將當前事務修改的資料行與其他事務修改的資料行比較,只要事務修改的資料行互相不衝突,就可以在備庫並行回放,能夠解決大部分的備庫回放並發度不夠的問題。

開啟條件

支援開啟WRITESET的版本如下:

  • RDS MySQL 5.7小版本在20211231及以上。

  • RDS MySQL 8.0小版本在20210930及以上。

說明

在DDL,大事務,修改外鍵表和無主鍵表這幾種業務情境中,事務的衝突檢測會從WRITESET退化到COMMIT_ORDER模式,此時備庫的可並發度不會比COMMIT_ORDER差,建議備庫和唯讀有複寫延遲問題的使用者主動開啟WRITESET模式。

開啟配置

開啟WRITESET需要完成如下參數設定,詳細操作請參見設定執行個體參數

  • transaction_write_set_extraction = XXHASH64

  • binlog_transaction_dependency_tracking = WRITESET

  • binlog_transaction_dependency_history_size = 500000

說明

binlog_transaction_dependency_history_size是記憶體中儲存的做衝突檢測的資料行數量的上限值,該值越大,儲存的資料行越多,事務間衝突檢測後並發度越高。

參數取值規則

警告

binlog_transaction_dependency_tracking參數與transaction_write_set_extraction參數存在關聯關係,不正確的對應關係不允許設定,會被攔截。需要按照以下規則設定參數值。

binlog_transaction_dependency_tracking

transaction_write_set_extraction

COMMIT_ORDER

OFFXXHASH64

WRITESETWRITESET_SESSION

XXHASH64

參數解釋

重要

binlog_transaction_dependency_trackingtransaction_write_set_extraction參數支援的核心小版本範圍為:

  • RDS MySQL 5.7:[20211231, 99999999)

  • RDS MySQL 8.0:[20210930, 99999999)

  • binlog_transaction_dependency_tracking

    • 含義:在多線程並行回放(replica_parallel_workersslave_parallel_workers大於0)中,binlog_transaction_dependency_tracking用於決定如何計算事務之間的衝突和依賴關係,讓備庫能夠並行回放Binlog中的事務。

    • 預設值:WRITESET

    • 可選值及含義:

      • COMMIT_ORDER:依賴主庫組提交判斷事務之間的依賴關係。如果兩個事務在主庫能夠並行提交,表示這兩個事務沒有衝突,能夠在備庫並行回放。此模式容易受到主庫並發度的影響。

      • WRITESET:用行層級粒度判斷事務之間的依賴關係。在有主鍵或唯一鍵的表中,只要兩個事務沒有更新同一行,那麼這兩個事務就能在備庫並行回放。不受主庫並發的影響。

      • WRITESET_SESSION:同一SESSION的事務在備庫串列回放,不同SESSION的事務按照WRITESET的規則在備庫回放。

  • transaction_write_set_extraction

    • 含義:用於決定WRITESET使用何種雜湊演算法計算資料行的雜湊值。開啟WRITESET後,將使用此演算法計算出的資料行雜湊值,判斷事務之間是否修改了相同的資料行。

    • 預設值:XXHASH64

    • 可選值及含義:

      • OFF:不計算資料行的雜湊值,要求WRITESET處於關閉狀態。

      • XXHASH64:使用64位的Hash演算法計算資料行的雜湊值。

相關文檔