ガベージコレクションのコンフィグレーション
次のシステム変数を使用してガベージコレクション(GC) を構成できます。
tidb_gc_enable
: TiKV のガベージコレクションを有効にするかどうかを制御します。tidb_gc_run_interval
: GC 間隔を指定します。tidb_gc_life_time
: 各 GC のデータが保持される時間制限を指定します。tidb_gc_concurrency
: GC のロックの解決ステップのスレッド数を指定します。tidb_gc_scan_lock_mode
: GC のロックの解決ステップでロックをスキャンする方法を指定します。tidb_gc_max_wait_time
: アクティブなトランザクションが GC セーフ ポイントをブロックする最大時間を指定します。
システム変数の値を変更する方法の詳細については、 システム変数を参照してください。
GC I/O 制限
TiKV は GC I/O 制限をサポートしています。 gc.max-write-bytes-per-sec
秒あたりの GC ワーカーの書き込みを制限し、通常のリクエストへの影響を軽減できます。
0
、この機能を無効にすることを示します。
tikv-ctl を使用してこの構成を動的に変更できます。
tikv-ctl --host=ip:port modify-tikv-config -n gc.max-write-bytes-per-sec -v 10MB
TiDB 5.0 の変更点
TiDB の以前のリリースでは、ガベージコレクションはmysql.tidb
システム テーブルを介して構成されていました。このテーブルへの変更は引き続きサポートされていますが、提供されているシステム変数を使用することをお勧めします。これにより、構成への変更を確実に検証し、予期しない動作を防ぐことができます ( #20655 )。
CENTRAL
ガベージコレクションモードはサポートされなくなりました。代わりにDISTRIBUTED
GC モード (TiDB 3.0 以降のデフォルト) が自動的に使用されます。 TiDB はガベージコレクションをトリガーするために各 TiKV 領域にリクエストを送信する必要がなくなるため、このモードはより効率的です。
以前のリリースでの変更点については、左側のメニューのTIDB バージョン セレクターを使用して、このドキュメントの以前のバージョンを参照してください。
TiDB 6.1.0 の変更点
TiDB v6.1.0 より前では、TiDB 内のトランザクションは GC セーフ ポイントに影響しません。 v6.1.0 以降、TiDB は GC セーフ ポイントを計算する際にトランザクションの startTS を考慮し、アクセス対象のデータがクリアされているという問題を解決します。トランザクションが長すぎると、安全なポイントが長時間ブロックされ、アプリケーションのパフォーマンスに影響します。
TiDB v6.1.0 では、アクティブなトランザクションが GC セーフ ポイントをブロックする最大時間を制御するためにシステム変数tidb_gc_max_wait_time
が導入されました。この値を超えると、GC セーフ ポイントが強制的に転送されます。
圧縮フィルターの GC
DISTRIBUTED
GC モードに基づいて、コンパクション フィルターの GC メカニズムは、別個の GC ワーカー スレッドの代わりに RocksDB のコンパクション プロセスを使用して GC を実行します。この新しい GC メカニズムは、GC による余分なディスク読み取りを回避するのに役立ちます。また、古いデータを消去した後は、シーケンシャル スキャンのパフォーマンスを低下させる大量の廃棄マークが残ることを回避します。
次の例は、TiKV 構成ファイルでメカニズムを有効にする方法を示しています。
[gc]
enable-compaction-filter = true
構成を動的に変更することで、この GC メカニズムを有効にすることもできます。次の例を参照してください。
show config where type = 'tikv' and name like '%enable-compaction-filter%';
+------+-------------------+-----------------------------+-------+
| Type | Instance | Name | Value |
+------+-------------------+-----------------------------+-------+
| tikv | 172.16.5.37:20163 | gc.enable-compaction-filter | false |
| tikv | 172.16.5.36:20163 | gc.enable-compaction-filter | false |
| tikv | 172.16.5.35:20163 | gc.enable-compaction-filter | false |
+------+-------------------+-----------------------------+-------+
set config tikv gc.enable-compaction-filter = true;
show config where type = 'tikv' and name like '%enable-compaction-filter%';
+------+-------------------+-----------------------------+-------+
| Type | Instance | Name | Value |
+------+-------------------+-----------------------------+-------+
| tikv | 172.16.5.37:20163 | gc.enable-compaction-filter | true |
| tikv | 172.16.5.36:20163 | gc.enable-compaction-filter | true |
| tikv | 172.16.5.35:20163 | gc.enable-compaction-filter | true |
+------+-------------------+-----------------------------+-------+