Upgrade to Pro — share decks privately, control downloads, hide ads and more …

binlog_group_commit_sync_delayの Replication性能影響...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for shunyasu shunyasu
August 07, 2026
33

binlog_group_commit_sync_delayの Replication性能影響について

Avatar for shunyasu

shunyasu

August 07, 2026

Transcript

  1. binlog_group_commit_sync_delayとは • binlog_group_commit_sync_delay ◦ ◦ • 8.0デフォルトのMTRでは、同じGroupCommitのTransactionが並列実行可能 ◦ ◦ •

    • • MySQLのコミット時に BinlogGroupCommitのために待機する時間を制御する変数 デフォルト0 binlog_transaction_dependency_tracking=COMMIT_ORDERの時 (8.4以降この変数は deplicated、WRITESETの挙動だけ) → BinlogCommit時に待ちを入れとSourceのGroupCommitサイズUP → Replicaの並列実行数(つまりReplication性能)もUP! ⚠ その分CommitのLatencyが増えるので注意
  2. 検証 • 設定 ◦ ◦ • MySQL Version: 8.0.28(EOL!!) Serverスペック

    ▪ Replica: 8vCPU 32GB Memory ▪ Source: 28vCPU 56GB Memory • sysbenchでReplicaよりSourceをスケールできるように Sourceの方を強くした 内容 ◦ ◦ sysbenchのoltp_write_onlyを実行し、Replicaで遅延が出ない最大の TPSを計測 (30秒のbenchで、Replicaの遅延が2秒以下で増加し続けていなければ OKのガバガバ実験 )
  3. 結果①(当初の目的) • 各スレッド数のbinlog_group_commit_sync_delayとReplication性能 • delay=10μsでは、0μsと比較して約7〜10%の性能向上 ◦ ◦ 100μs や 1000μs

    まで増やしても、追加の性能向上は限定的 スレッド数が多いほど、binlog_group_commit_sync_delay による改善効果が大きくなった
  4. 結果②(脱線) • COMMIT_ORDER / replica_preserve_commit_order=OFFでの性能 • delay=10μs では 3100 →

    3200 TPSで、+3.2% 程度 ◦ ◦ binlog_group_commit_sync_delay=10μsの方が影響大 preserve=OFFでのdelay 0→10では約10%向上で、preserve=ONの時と同じ
  5. まとめ • binlog_group_commit_sync_delayでの性能向上を確認できたが限定的な改善 ◦ • delayよりもdependency_tracking=WRITESETの効果がとても大きい ◦ • • delayを上げるなら、ある程度

    MTRのスレッド数を上げたほうが良さそう 8.4以降dependency_trackingはdeplicated、デフォルトで WRITESETだけ replica_parallel_workersは、思ったより上げてもスケールした。 ◦ vCPU数の4倍くらいまで上げても良い? ◦ (sysbenchの単純ワークロードだから、 Readがないからの可能性大) 保守的な設定から攻めた設定で、2倍の性能向上 ◦ COMMIT_ORDER/preserve=ON/delay=0μs → WRITESET/preserve=OFF/delay=10μs ▪ ◦ replica_parallel_workersはどちらも32 2800 TPS→5600 TPS