tencent cloud

TDSQL-C for MySQL

buffer pool分離

Download
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:14:39

機能説明

Innodbのバッファプール(BP)は、midpointに新しいページを挿入する方式で、フルテーブルスキャンなどの操作によるBPの悪影響を可能な限り回避しますが、効果は限定的です。BPの性能をさらに向上させるため、本機能はBP内に独立した領域を設定し、フルテーブルスキャン類似の操作専用に使用することをサポートします。フルテーブルスキャン操作が存在しない場合、この領域は通常のLRUリストによって完全に使用されます。フルテーブルスキャン操作が存在する場合、CLOCK置換アルゴリズムによってこの領域を管理し、データページの物理的な分離によって、フルテーブルスキャン類似操作によるBPの汚染を防止します。

サポートバージョン

カーネルバージョン TXSQL 8.0 3.1.15 以降です。

適用シーン

頻繁にデータベースでフルテーブルスキャンと大規模なデータ操作を実行する必要があるシナリオに適用されます。

使用説明

パラメータ説明

パラメータ名
動的
タイプ
デフォルト
パラメータ値の範囲
説明
innodb_txsql_independent_buffer_pool_evict_interval
yes
ulong
50
0-50
バックグラウンドスレッドがCLOCKリストを積極的に淘汰する時間間隔です。値が小さいほどCLOCKリストのページがメモリ内で長く保持され、0に設定するとCLOCKリストを即時クリアできます。
innodb_txsql_independent_buffer_pool_list_move_action
yes
ulong
0
0-2
CLOCKリストのページが通常のクエリで読み取られた後の動作:0は何も変更しないことを意味します。1はLRUリストへの同期的な移動を意味します。2はLRUリストへの非同期的な移動を意味し、移動操作はバックグラウンドスレッドに委任されます。
innodb_txsql_independent_buffer_pool_size_pct
yes
ulong
5
1-100
分離されたBPが使用可能なBPの最大割合です。割合が高いほど、通常のクエリへの影響が大きくなりますが、フルテーブルスキャン類似の操作の効果が高くなります。
innodb_txsql_independent_buffer_pool_users
yes
string
nullptr

ユーザー指定によってBP分離を使用する場合、具体的な設定方法は"user1@ip1;user2@ip2"となります。
innodb_txsql_independent_buffer_pool_enabled
yes
bool
ON
ON/OFF
バッファプール分離のスイッチです。オフにすると、新しいページが分離領域に入らなくなり、既存の分離ページはできるだけ早く淘汰されます。
innodb_txsql_independent_buffer_pool_max_expire_minutes
yes
bool
120
1-1440
CLOCKリストのページがBP分離において最大で保持される時間です。制御ロジック:use_timesはページのアクティビティ度を表し、CLOCKアルゴリズムの重要な指標です。ページが読み取られるたびにこの値が1増加し、バックグラウンドスレッドは一定時間間隔ごとにすべてのページのuse_timesを1減少させます。innodb_txsql_independent_buffer_pool_max_expire_minutesはuse_timesの上限値を制御します。
追加されたステータスは以下の通りです:
パラメータ
タイプ
説明
txsql_independent_buffer_pool_usage_counts
longlong
BP分離を使用するSQLの数

BP分離の使用方法1

independentというヒントを使用して、BP隔離を手動でトリガーできます。具体的な使用方法は、DMLのINSERT、DELETE、UPDATEなどのキーワードの直後に/*+ independent */を追加することです。例えば、select /*+ independent */ id from t;の注意点は/*+ independent */を前述以外の任意の位置に追加してもBP分離の使用はトリガーされません。例:select id /*+ independent */ from t;です。

BP分離の使用方法2

innodb_txsql_independent_buffer_pool_users でデフォルトでBP分離を使用するユーザーを設定します。このようなユーザーはBP分離ユーザーと称されます。innodb_txsql_independent_buffer_pool_users でBP分離ユーザーを追加、変更、削除した場合、デフォルトでBP分離を使用する動作は新規接続でのみ有効となり、既存接続の動作には影響しません。トラブルシューティングを容易にするため、show detail processlist;に「Independent_buffer_pool_session」ステータスを追加し、接続がデフォルトでBP分離を使用しているかどうかを表示します。

BP分離とプリペアドステートメント、ストアドプロシージャの関係

プリペアドステートメントおよびストアドプロシージャは、いずれも方法1を通じてBP分離を使用することがサポートされています。
プリペアドステートメント、ストアドプロシージャがBP分離を使用するかどうかは、作成したユーザーに関係なく、実行するユーザーのみに関係します。

BP分離の観察

BP分離機能は、show engine innodb statusにBP分離領域(CLOCKリスト)の監視を追加しました。BUFFER POOL AND MEMORYモジュールにCLOCKリストの長さと分布状況を追加しています。具体的には、use_timesはページのアクティビティ度を表し、CLOCKアルゴリズムの重要な指標です:ページが読み取られるたびにこの値が1増加し、バックグラウンドスレッドは一定時間間隔ごとにすべてのページのuse_timesを1減少させます。use_timesが0になるとページは淘汰またはディスクにフラッシュされます。BUFFER POOL AND MEMORYモジュールでは、use_timesが同じページをグループ化し、[0,10)、[10,100)、[100,1000)、[1000,10000)、[10000,100000)、[100000,unlimited)の6つの範囲に分類しています。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック