背景
大規模トランザクションをデータベースで実行する場合、他のトランザクションの実行速度が低下します。トランザクションの実行成功はコミットの成功を意味しますが、コミットにはbinlogのディスクへの書き込み完了が必要です。binlogは順序通りにファイルへ書き込まれ、完全な状態で順番に書き込まれる必要があります。つまり、同時に書き込めるトランザクションは1つだけです。100GBのような非常に大きなトランザクションの場合、binlogのディスク書き込みに長時間を要します。この間、コミットを待機している他のトランザクションは、当該大規模トランザクションの書き込み完了を待たなければならず、その結果、他のトランザクションの実行が大幅に遅延します。
機能説明
大規模トランザクションのコミット時には大量のbinlogログが書き込まれるため、他のトランザクションが長時間コミットできなくなります。Tencent Cloudカーネルチームはこのシナリオ向けに最適化を行い、大規模トランザクションで生成されるbinlogログを新規の一時ファイルにリダイレクトします。これにより、大規模トランザクションのコミットによる他のトランザクションのブロックとそれに伴う追加処理時間を回避します。当該大規模トランザクションがコミットされると、一時ファイルを正式なbinlogログシーケンスとして更新し、元データのマッピング関係を更新します。
サポートバージョン
カーネルバージョン TDSQL-C for MySQL 8.0 3.1.12 以上。
適用シーン
データベースにおける大規模トランザクションの実行およびその他のトランザクションシナリオにおいて、大規模トランザクションのコミットによる他のトランザクションのブロック時間を短縮するために使用されます。
使用説明
txsql_non_blocking_binlog_threshold パラメータによって本機能を使用します。このパラメータ値をデフォルト値以外に設定すると、本機能を使用できます。詳細なパラメータ説明は以下の通りです。
|
txsql_non_blocking_binlog_threshold | グローバル | ulong | UINT64_MAX | 134217728-UINT64_MAX | トランザクションのログ量がこの値(単位:バイト)以上の場合、大規模トランザクション向けのbinlogコミット最適化方式を使用してコミットされます。 |