TiKVコンフィグレーションファイル
TiKV設定ファイルは、コマンドラインパラメータよりも多くのオプションをサポートしています。デフォルトの設定ファイルはetc/config-template.tomlにあり、名前をconfig.toml
に変更することができます。
このドキュメントでは、コマンドラインパラメータに含まれないパラメータについてのみ説明します。詳細については、 コマンドラインパラメータ参照してください。
ヒント:
構成項目の値を調整する必要がある場合は、 設定を変更するを参照してください。
グローバル構成
abort-on-panic
TiKVパニック時にプロセスを終了するために
abort()
呼び出すかどうかを設定します。このオプションは、TiKVがシステムにコアダンプファイルの生成を許可するかどうかに影響します。- この設定項目の値が
false
の場合、TiKV がパニックになると、exit()
呼び出してプロセスを終了します。 - この設定項目の値が
true
の場合、TiKV パニックが発生すると、TiKV はabort()
呼び出してプロセスを終了します。このとき、TiKV は終了時にシステムがコア ダンプ ファイルを生成することを許可します。コア ダンプ ファイルを生成するには、コア ダンプに関連するシステム設定も実行する必要があります (たとえば、ulimit -c
コマンドでコア ダンプ ファイルのサイズ制限を設定し、コア ダンプのパスを設定します。オペレーティング システムによって関連する設定は異なります)。コア ダンプ ファイルがディスク領域を過剰に占有し、TiKV ディスク領域が不足するのを避けるため、コア ダンプの生成パスを TiKV データとは異なるディスク パーティションに設定することをお勧めします。
- この設定項目の値が
デフォルト値:
false
slow-log-file
- スローログを保存するファイル
- この設定項目が設定されておらず、
log.file.filename
設定されている場合、スローログはlog.file.filename
で指定されたログファイルに出力されます。 slow-log-file
もlog.file.filename
設定されていない場合は、すべてのログがデフォルトで「stderr」に出力されます。- 両方の設定項目が設定されている場合、通常ログは
log.file.filename
で指定したログファイルに出力され、スローログはslow-log-file
で設定したログファイルに出力されます。 - デフォルト値:
""
slow-log-threshold
- スローログを出力する閾値。処理時間がこの閾値よりも長い場合、スローログが出力されます。
- デフォルト値:
"1s"
memory-usage-limit
TiKVインスタンスのメモリ使用量の制限。TiKVのメモリ使用量がこのしきい値に近づくと、内部キャッシュが削除され、メモリが解放されます。
ほとんどの場合、TiKVインスタンスは利用可能なシステムメモリ全体の75%を使用するように設定されているため、この設定項目を明示的に指定する必要はありません。残りの25%のメモリはOSのページキャッシュ用に予約されています。詳細は
storage.block-cache.capacity
ご覧ください。単一の物理マシンに複数のTiKVノードをデプロイする場合でも、この設定項目を設定する必要はありません。この場合、TiKVインスタンスはメモリを
5/3 * block-cache.capacity
使用します。さまざまなシステムメモリ容量の既定値は次のとおりです。
- システム=8G ブロックキャッシュ=3.6G メモリ使用量制限=6G ページキャッシュ=2G
- システム=16G ブロックキャッシュ=7.2G メモリ使用量制限=12G ページキャッシュ=4G
- システム=32G ブロックキャッシュ=14.4G メモリ使用量制限=24G ページキャッシュ=8G
ログv5.4.0 の新機能
ログに関するコンフィグレーション項目。
バージョン5.4.0以降、TiKVとTiDBのログ設定項目の整合性
log-file
保つため、TiKVは以前の設定項目log-rotation-timespan
廃止し、log-level
log-format
以下の設定項目に変更log-rotation-size
ました。古い設定項目のみを設定し、その値をデフォルト以外の値に設定した場合、古い設定項目と新しい設定項目の互換性は維持されます。古い設定項目と新しい設定項目の両方を設定した場合、新しい設定項目が有効になります。
level
v5.4.0 の新機能
- ログレベル
"warn"
"fatal"
"error"
"debug"
"info"
- デフォルト値:
"info"
format
v5.4.0 の新機能
- ログ形式
- オプション
"text"
:"json"
- デフォルト値:
"text"
enable-timestamp
v5.4.0 の新機能
- ログ内のタイムスタンプを有効にするか無効にするかを決定します
- オプション
false
:true
- デフォルト値:
true
log.file v5.4.0 の新機能
- ログ ファイルに関連するコンフィグレーション項目。
filename
v5.4.0 の新機能
- ログファイル。この設定項目が設定されていない場合、ログはデフォルトで「stderr」に出力されます。この設定項目が設定されている場合、ログは対応するファイルに出力されます。
- デフォルト値:
""
max-size
バージョン5.4.0の新機能
- ログファイルの最大サイズ。ファイルサイズがこの設定項目で設定された値より大きい場合、システムは自動的に単一のファイルを複数のファイルに分割します。
- デフォルト値:
300
- 最大値:
4096
- 単位: MiB
max-days
v5.4.0 の新機能
- TiKV がログ ファイルを保持する最大日数。
- 構成項目が設定されていない場合、またはその値がデフォルト値
0
に設定されている場合、TiKV はログ ファイルを消去しません。 - パラメータが
0
以外の値に設定されている場合、TiKV はmax-days
後に期限切れのログ ファイルをクリーンアップします。
- 構成項目が設定されていない場合、またはその値がデフォルト値
- デフォルト値:
0
max-backups
バージョン5.4.0の新機能
- TiKV が保持するログ ファイルの最大数。
- 構成項目が設定されていない場合、またはその値がデフォルト値
0
に設定されている場合、TiKV はすべてのログ ファイルを保持します。 - 設定項目が
0
以外の値に設定されている場合、TiKVは最大でmax-backups
で指定された数の古いログファイルを保持します。たとえば、値が7
に設定されている場合、TiKVは最大で 7 つの古いログファイルを保持します。
- 構成項目が設定されていない場合、またはその値がデフォルト値
- デフォルト値:
0
サーバー
- サーバーに関連するコンフィグレーション項目。
addr
- リスニングIPアドレスとリスニングポート
- デフォルト値:
"127.0.0.1:20160"
advertise-addr
- クライアント通信のリスニングアドレスをアドバタイズする
- この構成項目が設定されていない場合は、値
addr
が使用されます。 - デフォルト値:
""
status-addr
構成項目は、
HTTP
アドレスを通じてTiKVステータスを直接報告します。ステータス アドレスを無効にするには、値を
""
に設定します。デフォルト値:
"127.0.0.1:20180"
status-thread-pool-size
HTTP
API サービスのワーカースレッドの数- デフォルト値:
1
- 最小値:
1
grpc-compression-type
- gRPCメッセージの圧縮アルゴリズム
"deflate"
"gzip"
:"none"
- デフォルト値:
"none"
grpc-concurrency
- gRPCワーカースレッドの数。gRPCスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
5
- 最小値:
1
grpc-concurrent-stream
- gRPC ストリームで許可される同時リクエストの最大数
- デフォルト値:
1024
- 最小値:
1
grpc-memory-pool-quota
- gRPC で使用できるメモリサイズを制限します
- デフォルト値: 制限なし
- OOMが発生した場合に備えてメモリを制限してください。使用量を制限すると、潜在的なストールにつながる可能性があることに注意してください。
grpc-raft-conn-num
- Raft通信におけるTiKVノード間の最大接続数
- デフォルト値:
1
- 最小値:
1
max-grpc-send-msg-len
- 送信できる gRPC メッセージの最大長を設定します
- デフォルト値:
10485760
- 単位: バイト
- 最大値:
2147483647
grpc-stream-initial-window-size
- gRPC ストリームのウィンドウサイズ
- デフォルト値:
2MiB
- 単位: KiB|MiB|GiB
- 最小値:
"1KiB"
grpc-keepalive-time
- gRPCが
keepalive
Pingメッセージを送信する時間間隔 - デフォルト値:
"10s"
- 最小値:
"1s"
grpc-keepalive-timeout
- gRPC ストリームのタイムアウトを無効にします
- デフォルト値:
"3s"
- 最小値:
"1s"
concurrent-send-snap-limit
- 同時に送信されるスナップショットの最大数
- デフォルト値:
32
- 最小値:
1
concurrent-recv-snap-limit
- 同時に受信できるスナップショットの最大数
- デフォルト値:
32
- 最小値:
1
end-point-recursion-limit
- TiKVがコプロセッサーDAG式をデコードするときに許可される再帰レベルの最大数
- デフォルト値:
1000
- 最小値:
1
end-point-request-max-handle-duration
- タスク処理のために TiDB から TiKV へのプッシュダウン要求に許可される最長時間
- デフォルト値:
"60s"
- 最小値:
"1s"
snap-io-max-bytes-per-sec
- スナップショット処理時の最大許容ディスク帯域幅
- デフォルト値:
"100MiB"
- 単位: KiB|MiB|GiB
- 最小値:
"1KiB"
snap-min-ingest-size
v8.1.2 の新機能
TiKV がスナップショットを処理するときに取り込み方式を採用するかどうかの最小しきい値を指定します。
- スナップショットのサイズがこのしきい値を超えると、TiKVはスナップショットからSSTファイルをRocksDBにインポートする取り込み方式を採用します。この方式は、大きなファイルの場合、より高速です。
- スナップショットのサイズがこのしきい値を超えない場合、TiKVは直接書き込み方式を採用し、各データをRocksDBに個別に書き込みます。この方式は、小さなファイルの場合により効率的です。
デフォルト値:
"2MiB"
単位: KiB|MiB|GiB
最小値:
0
enable-request-batch
- リクエストをバッチ処理するかどうかを決定します
- デフォルト値:
true
labels
{ zone = "us-west-1", disk = "ssd" }
などのサーバー属性を指定します。- デフォルト値:
{}
background-thread-count
- エンドポイント スレッド、 BRスレッド、分割チェック スレッド、リージョンスレッド、および遅延に影響されないタスクのその他のスレッドを含む、バックグラウンド プールの作業スレッド数。
- デフォルト値: CPU コアの数が 16 未満の場合、デフォルト値は
2
です。それ以外の場合、デフォルト値は3
です。
end-point-slow-log-threshold
- TiDBのプッシュダウンリクエストがスローログを出力するまでの時間閾値。処理時間がこの閾値を超えると、スローログが出力されます。
- デフォルト値:
"1s"
- 最小値:
0
raft-client-queue-size
- TiKVにおけるRaftメッセージのキューサイズを指定します。時間内に送信されないメッセージが多すぎてバッファがいっぱいになったり、メッセージが破棄されたりする場合は、システムの安定性を向上させるために、より大きな値を指定できます。
- デフォルト値:
8192
simplify-metrics
v6.2.0 の新機能
- 返される監視メトリックを簡素化するかどうかを指定します。値を
true
に設定すると、TiKV は一部のメトリックを除外することで、各リクエストに対して返されるデータの量を削減します。 - デフォルト値:
false
forward-max-connections-per-address
v5.0.0 の新機能
- サービスとサーバーへのリクエスト転送用の接続プールのサイズを設定します。値が小さすぎると、リクエストのレイテンシーと負荷分散に影響します。
- デフォルト値:
4
読み取りプール.統合
読み取りリクエストを処理する単一スレッドプールに関するコンフィグレーション項目。このスレッドプールは、バージョン4.0以降、従来のstorageスレッドプールとコプロセッサスレッドプールに代わるものです。
min-thread-count
- 統合読み取りプールの最小作業スレッド数
- デフォルト値:
1
max-thread-count
- 統合読み取りプールまたはUnifyReadPoolスレッドプールの最大作業スレッド数。このスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- 値の範囲:
[min-thread-count, MAX(4, CPU quota * 10)]
。MAX(4, CPU quota * 10)
4
とCPU quota * 10
うち大きい方の値を取得します。 - デフォルト値: MAX(4, CPU * 0.8)
注記:
スレッド数を増やすとコンテキストスイッチが増加し、パフォーマンスが低下する可能性があります。この設定項目の値を変更することは推奨されません。
stack-size
- 統合スレッドプール内のスレッドのスタックサイズ
- タイプ: 整数 + 単位
- デフォルト値:
"10MiB"
- 単位: KiB|MiB|GiB
- 最小値:
"2MiB"
- 最大値: システムで実行された
ulimit -sH
コマンドの結果出力される Kbyte 数。
max-tasks-per-worker
- 統合読み取りプール内の 1 つのスレッドに許可されるタスクの最大数。値を超えると
Server Is Busy
が返されます。 - デフォルト値:
2000
- 最小値:
2
auto-adjust-pool-size
v6.3.0 の新機能
- スレッドプールサイズを自動調整するかどうかを制御します。有効にすると、現在のCPU使用率に基づいてUnifyReadPoolスレッドプールサイズが自動的に調整され、TiKVの読み取りパフォーマンスが最適化されます。スレッドプールの指定可能な範囲は
[max-thread-count, MAX(4, CPU)]
です。最大値はmax-thread-count
と同じです。 - デフォルト値:
false
読み取りプール。storage
storageスレッド プールに関連するコンフィグレーション項目。
use-unified-pool
- storageリクエストに統合スレッドプール(
readpool.unified
で設定)を使用するかどうかを決定します。このパラメータの値がfalse
場合、このセクションの残りのパラメータ(readpool.storage
)で設定された別のスレッドプールが使用されます。 - デフォルト値: このセクション (
readpool.storage
) に他の設定がない場合、デフォルト値はtrue
です。それ以外の場合は、下位互換性のため、デフォルト値はfalse
です。このオプションを有効にする前に、必要に応じてreadpool.unified
の設定を変更してください。
high-concurrency
- 高優先度
read
リクエストを処理する同時スレッドの許容数 8
≤cpu num
≤16
の場合、デフォルト値はcpu_num * 0.5
です。9cpu num
8
より小さい場合、デフォルト値は4
です。1516
cpu num
場合、デフォルト値は8
です。- 最小値:
1
normal-concurrency
- 通常優先度
read
リクエストを処理できる同時スレッドの許容数 8
≤cpu num
≤16
の場合、デフォルト値はcpu_num * 0.5
です。9cpu num
8
より小さい場合、デフォルト値は4
です。1516
cpu num
場合、デフォルト値は8
です。- 最小値:
1
low-concurrency
- 低優先度
read
リクエストを処理する同時スレッドの許容数 8
≤cpu num
≤16
の場合、デフォルト値はcpu_num * 0.5
です。9cpu num
8
より小さい場合、デフォルト値は4
です。1516
cpu num
場合、デフォルト値は8
です。- 最小値:
1
max-tasks-per-worker-high
- 高優先度スレッド プール内の 1 つのスレッドに許可されるタスクの最大数。値を超えると
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
max-tasks-per-worker-normal
- 通常優先度のスレッド プール内の 1 つのスレッドに許可されるタスクの最大数。値を超えると
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
max-tasks-per-worker-low
- 低優先度スレッド プール内の 1 つのスレッドに許可されるタスクの最大数。値を超えると
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
stack-size
- ストレージ読み取りスレッドプール内のスレッドのスタックサイズ
- タイプ: 整数 + 単位
- デフォルト値:
"10MiB"
- 単位: KiB|MiB|GiB
- 最小値:
"2MiB"
- 最大値: システムで実行された
ulimit -sH
コマンドの結果出力される Kbyte 数。
readpool.coprocessor
コプロセッサースレッド プールに関連するコンフィグレーション項目。
use-unified-pool
- コプロセッサリクエストに統合スレッドプール(
readpool.unified
で設定)を使用するかどうかを決定します。このパラメータの値がfalse
場合、このセクションの残りのパラメータ(readpool.coprocessor
)で設定される別のスレッドプールが使用されます。 - デフォルト値:このセクション(
readpool.coprocessor
)のパラメータがいずれも設定されていない場合、デフォルト値はtrue
です。それ以外の場合は、下位互換性のためデフォルト値はfalse
です。このパラメータを有効にする前に、readpool.unified
の設定項目を調整してください。
high-concurrency
- チェックポイントなどの高優先度コプロセッサー要求を処理する同時スレッドの許容数
- デフォルト値:
CPU * 0.8
- 最小値:
1
normal-concurrency
- 通常優先度のコプロセッサー要求を処理する同時スレッドの許容数
- デフォルト値:
CPU * 0.8
- 最小値:
1
low-concurrency
- テーブルスキャンなどの低優先度コプロセッサー要求を処理する同時スレッドの許容数
- デフォルト値:
CPU * 0.8
- 最小値:
1
max-tasks-per-worker-high
- 高優先度スレッドプール内の1つのスレッドに許可されるタスク数。この数を超えると、
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
max-tasks-per-worker-normal
- 通常優先度のスレッドプール内の1つのスレッドに許可されるタスク数。この数を超えると、
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
max-tasks-per-worker-low
- 低優先度スレッドプール内の1つのスレッドに許可されるタスク数。この数を超えると、
Server Is Busy
返されます。 - デフォルト値:
2000
- 最小値:
2
stack-size
- コプロセッサースレッドプール内のスレッドのスタックサイズ
- タイプ: 整数 + 単位
- デフォルト値:
"10MiB"
- 単位: KiB|MiB|GiB
- 最小値:
"2MiB"
- 最大値: システムで実行された
ulimit -sH
コマンドの結果出力される Kbyte 数。
storage
storageに関するコンフィグレーション項目。
data-dir
- RocksDBディレクトリのstorageパス
- デフォルト値:
"./"
engine
v6.6.0 の新機能
エンジンの種類を指定します。この設定は新しいクラスターを作成するときにのみ指定でき、一度指定した後は変更できません。
デフォルト値:
"raft-kv"
値のオプション:
"raft-kv"
: TiDB v6.6.0 より前のバージョンのデフォルトのエンジン タイプ。"partitioned-raft-kv"
: TiDB v6.6.0 で導入された新しいstorageエンジン タイプ。
scheduler-concurrency
- キーの同時操作を防止するメモリロック機構を内蔵。各キーには異なるスロットにハッシュが保存されています。
- デフォルト値:
524288
- 最小値:
1
scheduler-worker-pool-size
- スケジューラスレッドプール内のスレッド数。スケジューラスレッドは主に、データ書き込み前のトランザクションの整合性チェックに使用されます。CPUコア数が
16
以上の場合、デフォルト値は8
です。それ以外の場合、デフォルト値は4
です。スケジューラスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。 - デフォルト値:
4
- 値の範囲:
[1, MAX(4, CPU)]
。MAX(4, CPU)
場合、CPU
CPU コアの数を意味します。MAX(4, CPU)
4
とCPU
うち大きい方の値になります。
scheduler-pending-write-threshold
- 書き込みキューの最大サイズ。この値を超えると、TiKVへの新しい書き込みに対して
Server Is Busy
エラーが返されます。 - デフォルト値:
"100MiB"
- 単位: MiB|GiB
enable-async-apply-prewrite
- 非同期コミットトランザクションが、事前書き込みリクエストを適用する前にTiKVクライアントに応答するかどうかを決定します。この設定項目を有効にすると、適用期間が長い場合のレイテンシーを簡単に短縮できます。また、適用期間が安定していない場合は遅延ジッターを削減できます。
- デフォルト値:
false
reserve-space
- TiKVを起動すると、ディスク保護のためディスク上に一定の領域が予約されます。ディスク残量が予約領域を下回ると、TiKVは一部の書き込み操作を制限します。予約領域は2つの部分に分かれており、予約領域の80%はディスク容量不足時の操作に必要な追加ディスク領域として使用され、残りの20%は一時ファイルの保存に使用されます。領域確保のプロセスにおいて、余分なディスク領域の使用によってstorageが枯渇した場合、この一時ファイルはサービスを復旧するための最後の保護として機能します。
- 一時ファイルの名前は
space_placeholder_file
で、ディレクトリstorage.data-dir
にあります。TiKV のディスク容量が不足してオフラインになった場合、TiKV を再起動すると、一時ファイルは自動的に削除され、TiKV は空き容量の確保を試みます。 - 残り容量が不足している場合、TiKVは一時ファイルを作成しません。保護の有効性は、確保された領域のサイズに依存します。確保された領域のサイズは、ディスク容量の5%とこの設定値のいずれか大きい方の値になります。この設定項目の値が
"0MiB"
の場合、TiKVはこのディスク保護機能を無効にします。 - デフォルト値:
"5GiB"
- 単位: MiB|GiB
enable-ttl
- TTLは「Time to live(存続時間)」の略です。この項目を有効にすると、TiKVはTTLに達したデータを自動的に削除します。TTLの値を設定するには、クライアント経由でデータを書き込む際にリクエストでTTLを指定する必要があります。TTLが指定されていない場合、TiKVは対応するデータを自動的に削除しません。
- デフォルト値:
false
ttl-check-poll-interval
- 物理領域を再利用するためにデータをチェックする間隔。データがTTLに達した場合、TiKVはチェック中に物理領域を強制的に再利用します。
- デフォルト値:
"12h"
- 最小値:
"0s"
background-error-recovery-window
v6.1.0 の新機能
- RocksDBが回復可能なバックグラウンドエラーを検出した後、TiKVが回復するまでの最大許容時間です。バックグラウンドSSTファイルが破損している場合、RocksDBは破損したSSTファイルが属するピアを特定した後、ハートビートを介してPDに報告します。PDは、このピアを削除するためのスケジュール操作を実行します。最終的に、破損したSSTファイルは直接削除され、TiKVのバックグラウンドは再び正常に動作します。
- 破損したSSTファイルは、リカバリが完了するまでまだ存在します。その間、RocksDBはデータの書き込みを続行できますが、破損した部分のデータを読み取るとエラーが報告されます。
- この時間枠内にリカバリが完了しない場合、TiKV はpanicに陥ります。
- デフォルト値: 1時間
api-version
v6.1.0 の新機能
- TiKV が RawKV ストアとして機能する場合に TiKV によって使用されるstorage形式とインターフェース バージョン。
- 値のオプション:
1
: API V1を使用し、クライアントから渡されたデータをエンコードせずにそのまま保存します。v6.1.0より前のバージョンでは、TiKVはデフォルトでAPI V1を使用します。2
: API V2 を使用します:- データはマルチバージョン同時実行制御 (MVCC)形式で保存され、タイムスタンプは tikv-server によって PD (TSO) から取得されます。
- データはさまざまな使用方法に応じてスコープが設定され、API V2 は単一クラスター内での TiDB、トランザクション KV、および RawKV アプリケーションの共存をサポートします。
- API V2を使用する場合は、同時に
storage.enable-ttl = true
設定する必要があります。API V2はTTL機能をサポートしているため、enable-ttl
明示的にオンにする必要があります。そうしないと、storage.enable-ttl
デフォルトでfalse
に設定されるため、競合が発生します。 - API V2 を有効にすると、古いデータを再利用するために少なくとも 1 つの tidb-server インスタンスをデプロイする必要があります。この tidb-server インスタンスは、読み取りと書き込みのサービスを同時に提供できます。高可用性を確保するには、複数の tidb-server インスタンスをデプロイできます。
- API V2にはクライアントのサポートが必要です。詳細については、API V2のクライアントの該当マニュアルを参照してください。
- v6.2.0以降、RawKVの変更データキャプチャ(CDC)がサポートされました。1を参照してくださいRawKV CDC
- デフォルト値:
1
- API V1とAPI V2はstorage形式が異なります。TiKVにTiDBデータのみが含まれている場合のみ、API V2を直接有効化または無効化できます。それ以外の場合は、新しいクラスターをデプロイし、 RawKV バックアップと復元使用してデータを移行する必要があります。
- API V2 を有効にした後は、TiKV クラスターを v6.1.0 より前のバージョンにダウングレードすることはできません。ダウングレードすると、データが破損する可能性があります。
txn-status-cache-capacity
バージョン7.6.0の新機能
- TiKVのトランザクションステータスキャッシュの容量を設定します。このパラメータは変更しないでください。
- デフォルト値:
5120000
storage.block-cache
複数の RocksDBカラムファミリ (CF) 間でのブロックキャッシュの共有に関連するコンフィグレーション項目。
capacity
共有ブロックキャッシュのサイズ。
デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値はシステムメモリの合計サイズの 45% になります。storage.engine="partitioned-raft-kv"
場合、デフォルト値はシステムメモリの合計サイズの 30% になります。
単位: KiB|MiB|GiB
low-pri-pool-ratio
v8.0.0 の新機能
- Titanコンポーネントが使用できるブロックキャッシュ全体の割合を制御します。
- デフォルト値:
0.2
storage.フロー制御
TiKVのフロー制御メカニズムに関するコンフィグレーション項目。このメカニズムはRocksDBの書き込みストールメカニズムに代わるもので、スケジューラレイヤーでフローを制御することで、 RaftstoreまたはApplyスレッドのスタックによる二次災害を回避します。
enable
- フロー制御メカニズムを有効にするかどうかを決定します。有効にすると、TiKVはKvDBの書き込みストールメカニズムとRaftDB(memtableを除く)の書き込みストールメカニズムを自動的に無効にします。
- デフォルト値:
true
memtables-threshold
- kvDB memtableの数がこのしきい値に達すると、フロー制御メカニズムが動作を開始します。1
enable
true
に設定すると、この設定項目はrocksdb.(defaultcf|writecf|lockcf).max-write-buffer-number
オーバーライドします。 - デフォルト値:
5
l0-files-threshold
- kvDB L0ファイルの数がこのしきい値に達すると、フロー制御メカニズムが作動を開始します。1
enable
true
に設定すると、この設定項目はrocksdb.(defaultcf|writecf|lockcf).level0-slowdown-writes-trigger
オーバーライドします。 - デフォルト値:
20
soft-pending-compaction-bytes-limit
- KvDB内の保留中の圧縮バイトがこのしきい値に達すると、フロー制御メカニズムは一部の書き込み要求を拒否し、
ServerIsBusy
エラーを報告します。3enable
true
に設定すると、この設定項目はrocksdb.(defaultcf|writecf|lockcf).soft-pending-compaction-bytes-limit
オーバーライドします。 - デフォルト値:
"192GiB"
hard-pending-compaction-bytes-limit
- KvDB内の保留中の圧縮バイトがこのしきい値に達すると、フロー制御メカニズムはすべての書き込み要求を拒否し、
ServerIsBusy
エラーを報告します。3enable
true
に設定されている場合、この設定項目はrocksdb.(defaultcf|writecf|lockcf).hard-pending-compaction-bytes-limit
オーバーライドします。 - デフォルト値:
"1024GiB"
storage.io-レート制限
I/O レート リミッターに関連するコンフィグレーション項目。
max-bytes-per-sec
- サーバーが1秒間にディスクに書き込む、またはディスクから読み取ることができる最大I/Oバイト数を制限します(以下の
mode
の設定項目によって決定されます)。この制限に達すると、TiKVはフォアグラウンド操作よりもバックグラウンド操作のスロットリングを優先します。この設定項目の値は、ディスクの最適なI/O帯域幅(例えば、クラウドディスクベンダーが指定する最大I/O帯域幅)に設定する必要があります。この設定値が0に設定されている場合、ディスクI/O操作は制限されません。 - デフォルト値:
"0MiB"
mode
- どのタイプのI/O操作をカウントし、しきい値
max-bytes-per-sec
未満に制限するかを決定します。現在、書き込み専用モードのみがサポートされています。 "all-io"
"write-only"
オプション:"read-only"
- デフォルト値:
"write-only"
日付
enable-forwarding
v5.0.0 の新機能
- ネットワーク分離の可能性がある場合に、TiKV の PD クライアントがフォロワー経由でリーダーにリクエストを転送するかどうかを制御します。
- デフォルト値:
false
- 環境に分離されたネットワークが存在する可能性がある場合は、このパラメータを有効にすると、サービスが利用できない期間を短縮できます。
- 分離、ネットワーク中断、またはダウンタイムが発生したかどうかを正確に判断できない場合、このメカニズムを使用すると誤判断のリスクがあり、可用性とパフォーマンスの低下につながります。ネットワーク障害が発生していない場合は、このパラメータを有効にすることは推奨されません。
endpoints
- PD のエンドポイント。複数のエンドポイントを指定する場合は、カンマで区切る必要があります。
- デフォルト値:
["127.0.0.1:2379"]
retry-interval
- PD 接続を再試行する間隔。
- デフォルト値:
"300ms"
retry-log-every
- PDクライアントがエラーを検知した際にエラー報告をスキップする頻度を指定します。例えば、値が
5
の場合、PDクライアントはエラーを検知した後、4回ごとにエラー報告をスキップし、5回ごとにエラーを報告します。 - この機能を無効にするには、値を
1
に設定します。 - デフォルト値:
10
retry-max-count
- PD接続の初期化を再試行する最大回数
- 再試行を無効にするには、値を
0
に設定します。再試行回数の制限を解除するには、値を-1
に設定します。 - デフォルト値:
-1
ラフトストア
Raftstoreに関連するコンフィグレーション項目。
prevote
prevote
有効または無効にします。この機能を有効にすると、ネットワーク パーティションからの回復後にシステムのジッターが軽減されます。- デフォルト値:
true
capacity
- storage容量。データの保存に許容される最大サイズです。1
capacity
指定しない場合は、現在のディスクの容量が優先されます。同じ物理ディスクに複数のTiKVインスタンスをデプロイするには、このパラメータをTiKV設定に追加します。詳細はハイブリッド展開の主なパラメータ参照してください。 - デフォルト値:
0
- 単位: KiB|MiB|GiB
raftdb-path
- Raftライブラリへのパス(デフォルトでは
storage.data-dir/raft
- デフォルト値:
""
raft-base-tick-interval
注記:
この構成項目は SQL ステートメントで照会することはできませんが、構成ファイルで構成できます。
- Raftステートマシンが刻む時間間隔
- デフォルト値:
"1s"
- 最小値:
0
より大きい
raft-heartbeat-ticks
注記:
この構成項目は SQL ステートメントで照会することはできませんが、構成ファイルで構成できます。
- ハートビート送信時に経過したティック数。これは、ハートビートが
raft-base-tick-interval
*raft-heartbeat-ticks
の時間間隔で送信されることを意味します。 - デフォルト値:
2
- 最小値:
0
より大きい
raft-election-timeout-ticks
注記:
この構成項目は SQL ステートメントで照会することはできませんが、構成ファイルで構成できます。
- Raft選出が開始されるまでの経過ティック数。これは、 Raftグループにリーダーがいない場合、約
raft-base-tick-interval
*raft-election-timeout-ticks
の時間間隔後にリーダー選出が開始されることを意味します。 - デフォルト値:
10
- 最小値:
raft-heartbeat-ticks
raft-min-election-timeout-ticks
注記:
この構成項目は SQL ステートメントで照会することはできませんが、構成ファイルで構成できます。
- Raft選出が開始される最小ティック数。値が
0
の場合、値raft-election-timeout-ticks
が使用されます。このパラメータの値はraft-election-timeout-ticks
以上である必要があります。 - デフォルト値:
0
- 最小値:
0
raft-max-election-timeout-ticks
注記:
この構成項目は SQL ステートメントで照会することはできませんが、構成ファイルで構成できます。
- Raft選出が開始される最大ティック数。この数値が
0
の場合、raft-election-timeout-ticks
*2
の値が使用されます。 - デフォルト値:
0
- 最小値:
0
raft-max-size-per-msg
- 単一メッセージパケットのサイズに対するソフト制限
- デフォルト値:
"1MiB"
- 最小値:
0
より大きい - 最大値:
3GiB
- 単位: KiB|MiB|GiB
raft-max-inflight-msgs
- 確認するRaftログの数。この数を超えると、 Raftステートマシンはログ送信を遅くします。
- デフォルト値:
256
- 最小値:
0
より大きい - 最大値:
16384
raft-entry-max-size
- 単一ログの最大サイズに対するハード制限
- デフォルト値:
"8MiB"
- 最小値:
0
- 単位: MiB|GiB
raft-log-compact-sync-interval
バージョン5.3の新機能
- 不要なRaftログを圧縮する時間間隔
- デフォルト値:
"2s"
- 最小値:
"0s"
raft-log-gc-tick-interval
- Raftログを削除するポーリング タスクがスケジュールされる時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"3s"
- 最小値:
"0s"
raft-log-gc-threshold
- 残存Raftログの最大許容数に関するソフト制限
- デフォルト値:
50
- 最小値:
1
raft-log-gc-count-limit
- 許容される残存Raftログ数のハードリミット
- デフォルト値: 3/4リージョンサイズに収容できるログ数 (ログ 1 つあたり 1MiB として計算)
- 最小値:
0
raft-log-gc-size-limit
- 残余Raftの許容サイズに関する厳密な制限
- デフォルト値:リージョンサイズの3/4
- 最小値:
0
より大きい
raft-log-reserve-max-ticks
バージョン5.3の新機能
- この設定項目で設定されたティック数が経過した後、残りのRaftログの数が
raft-log-gc-threshold
で設定された値に達していなくても、TiKV はこれらのログに対してガベージコレクション(GC) を実行します。 - デフォルト値:
6
- 最小値:
0
より大きい
raft-engine-purge-interval
- ディスク容量をできるだけ早く再利用するために、古いTiKVログファイルをパージする間隔。RaftRaftは交換可能なコンポーネントであるため、一部の実装ではパージ処理が必要になります。
- デフォルト値:
"10s"
raft-entry-cache-life-time
- メモリ内のログキャッシュに許容される最大残り時間
- デフォルト値:
"30s"
- 最小値:
0
max-apply-unpersisted-log-limit
バージョン8.1.0の新機能
コミットされているが永続化されていない、適用可能なRaftログの最大数。
- この設定項目を
0
より大きい値に設定すると、TiKVノードはコミット済みだが永続化されていないRaftログを事前に適用できるようになり、そのノードにおけるIOジッターによるロングテールレイテンシーを効果的に削減します。ただし、TiKVのメモリ使用量とRaftログが占有するディスク容量が増加する可能性があります。 - この設定項目を
0
に設定すると、この機能は無効になります。つまり、TiKVはRaftログがコミットされ、永続化されるまで待機してから適用する必要があります。このデフォルトの動作は、v8.1.0より前の動作と一致しています。
- この設定項目を
デフォルト値:
0
最小値:
0
hibernate-regions
- リージョンの休止状態を有効または無効にします。このオプションを有効にすると、長時間アイドル状態になっているリージョンは自動的に休止状態になります。これにより、アイドル状態のリージョンにおけるRaftリーダーとフォロワー間のハートビートメッセージによって発生する余分なオーバーヘッドが軽減されます。1
peer-stale-state-check-interval
指定すると、休止状態のリージョンにおけるリーダーとフォロワー間のハートビート間隔を変更できます。 - デフォルト値: v5.0.2 以降では
true
、v5.0.2 より前のバージョンではfalse
split-region-check-tick-interval
- リージョン分割が必要かどうかを確認する間隔を指定します。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"10s"
- 最小値:
0
region-split-check-diff
- リージョン分割前にリージョンデータが超過できる最大値
- デフォルト値:リージョンサイズの 1/16。
- 最小値:
0
region-compact-check-interval
- RocksDB 圧縮を手動でトリガーする必要があるかどうかを確認する時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"5m"
- 最小値:
0
region-compact-check-step
手動圧縮の各ラウンドで一度にチェックされる領域の数
デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は100
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は5
です。
最小値:
0
region-compact-min-tombstones
- RocksDBの圧縮をトリガーするために必要なトゥームストーンの数
- デフォルト値:
10000
- 最小値:
0
region-compact-tombstones-percent
- RocksDBの圧縮をトリガーするために必要なトゥームストーンの割合
- デフォルト値:
30
- 最小値:
1
- 最大値:
100
region-compact-min-redundant-rows
v7.1.0 の新機能
- RocksDB 圧縮をトリガーするために必要な冗長 MVCC 行の数。
- デフォルト値:
50000
- 最小値:
0
region-compact-redundant-rows-percent
v7.1.0 の新機能
- RocksDB 圧縮をトリガーするために必要な冗長 MVCC 行の割合。
- デフォルト値:
20
- 最小値:
1
- 最大値:
100
report-region-buckets-tick-interval
v6.1.0 の新機能
enable-region-bucket
が true の場合、TiKV がバケット情報を PD に報告する間隔。- デフォルト値:
10s
pd-heartbeat-tick-interval
- PD へのリージョンのハートビートがトリガーされる時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"1m"
- 最小値:
0
pd-store-heartbeat-tick-interval
- ストアの PD へのハートビートがトリガーされる時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"10s"
- 最小値:
0
pd-report-min-resolved-ts-interval
バージョン7.6.0の新機能
注記:
この設定項目の名前は
report-min-resolved-ts-interval
から変更されました。v7.6.0以降、report-min-resolved-ts-interval
無効になりました。
- TiKVがPDリーダーに解決済みTSを報告する最小間隔を指定します
0
に設定すると、報告は無効になります。 - デフォルト値:
"1s"
(正の最小値)。v6.3.0より前のバージョンでは、デフォルト値は"0s"
です。 - 最小値:
0
- 単位:秒
snap-mgr-gc-tick-interval
- 期限切れのスナップショット ファイルのリサイクルがトリガーされる時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"1m"
- 最小値:
0
snap-gc-timeout
- スナップショットファイルが保存される最長時間
- デフォルト値:
"4h"
- 最小値:
0
snap-generator-pool-size
v5.4.0 の新機能
snap-generator
スレッド プールのサイズを構成します。- リカバリシナリオにおいて、TiKV でリージョンのスナップショット生成を高速化するには、対応するワーカーの
snap-generator
番目のスレッド数を増やす必要があります。この設定項目を使用して、snap-generator
番目のスレッドプールのサイズを増やすことができます。 - デフォルト値:
2
- 最小値:
1
lock-cf-compact-interval
- TiKVがロックカラムファミリーの手動圧縮をトリガーする時間間隔
- デフォルト値:
"10m"
- 最小値:
0
lock-cf-compact-bytes-threshold
- TiKVがロックカラムファミリーの手動圧縮をトリガーするサイズ
- デフォルト値:
"256MiB"
- 最小値:
0
- 単位: MiB
notify-capacity
- リージョンメッセージ キューの最長の長さ。
- デフォルト値:
40960
- 最小値:
0
messages-per-tick
- バッチごとに処理されるメッセージの最大数
- デフォルト値:
4096
- 最小値:
0
max-peer-down-duration
- ピアに許可される最長時間の非アクティブ期間。タイムアウトが発生したピアは
down
とマークされ、PD は後でそのピアを削除しようとします。 - デフォルト値:
"10m"
- 最小値: Hibernateリージョンが有効な場合、最小値は
peer-stale-state-check-interval * 2
です。Hibernateリージョンが無効な場合、最小値は0
です。
max-leader-missing-duration
- Raftグループにリーダーが存在しない状態がピアに許される最長時間。この値を超えると、ピアはPDを使用して、ピアが削除されたかどうかを確認します。
- デフォルト値:
"2h"
- 最小値:
abnormal-leader-missing-duration
より大きい
abnormal-leader-missing-duration
- Raftグループにリーダーが存在しない状態がピアに許容される最長時間。この値を超えると、ピアは異常とみなされ、メトリックとログにマークが付けられます。
- デフォルト値:
"10m"
- 最小値:
peer-stale-state-check-interval
より大きい
peer-stale-state-check-interval
- ピアがRaftグループにリーダーがいない状態にあるかどうかのチェックをトリガーする時間間隔。
- デフォルト値:
"5m"
- 最小値:
2 * election-timeout
より大きい
leader-transfer-max-log-lag
- Raftリーダーの転送中に転送先に許可される失われたログの最大数
- デフォルト値:
128
- 最小値:
10
max-snapshot-file-raw-size
v6.1.0 の新機能
- スナップショット ファイルのサイズがこの設定値を超えると、このファイルは複数のファイルに分割されます。
- デフォルト値:
100MiB
- 最小値:
100MiB
snap-apply-batch-size
- インポートされたスナップショットファイルをディスクに書き込むときに必要なメモリキャッシュサイズ
- デフォルト値:
"10MiB"
- 最小値:
0
- 単位: MiB
consistency-check-interval
- 整合性チェックがトリガーされる時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"0s"
- 最小値:
0
raft-store-max-leader-lease
- Raftリーダーの最も長い信頼期間
- デフォルト値:
"9s"
- 最小値:
0
right-derive-when-split
- リージョンを分割する際、新しいリージョンの開始キーを指定します。この設定項目を
true
に設定すると、開始キーは最大分割キーになります。この設定項目をfalse
に設定すると、開始キーは元のリージョンの開始キーになります。 - デフォルト値:
true
merge-max-log-gap
merge
実行した場合に許容される欠落ログの最大数- デフォルト値:
10
- 最小値:
raft-log-gc-count-limit
より大きい
merge-check-tick-interval
- TiKVがリージョンのマージが必要かどうかを確認する時間間隔
- デフォルト値:
"2s"
- 最小値:
0
より大きい
use-delete-range
rocksdb delete_range
インターフェースからデータを削除するかどうかを決定します- デフォルト値:
false
cleanup-import-sst-interval
- 期限切れの SST ファイルをチェックする時間間隔。1
0
、この機能が無効であることを意味します。 - デフォルト値:
"10m"
- 最小値:
0
local-read-batch-size
- 1バッチで処理される読み取り要求の最大数
- デフォルト値:
1024
- 最小値:
0
より大きい
apply-yield-write-size
v6.4.0 の新機能
- 適用スレッドが1回のポーリングで1つのFSM(有限状態機械)に書き込める最大バイト数。これはソフトリミットです。
- デフォルト値:
"32KiB"
- 最小値:
0
より大きい - 単位: KiB|MiB|GiB
apply-max-batch-size
- Raftステートマシンは、BatchSystemによってデータ書き込みリクエストをバッチ処理します。この設定項目は、1バッチでリクエストを処理できるRaftステートマシンの最大数を指定します。
- デフォルト値:
256
- 最小値:
0
より大きい - 最大値:
10240
apply-pool-size
- ディスクにデータをフラッシュするプール内のスレッドの許容数。これはApplyスレッドプールのサイズです。このスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
2
- 値の範囲:
[1, CPU * 10]
CPU
CPU コアの数を意味します。
store-max-batch-size
- Raftステートマシンは、BatchSystemによってログをディスクにフラッシュするリクエストをバッチ処理します。この設定項目は、1回のバッチ処理でリクエストを処理できるRaftステートマシンの最大数を指定します。
hibernate-regions
が有効な場合、デフォルト値は256
です。5hibernate-regions
無効な場合、デフォルト値は1024
です。- 最小値:
0
より大きい - 最大値:
10240
store-pool-size
- Raft を処理するプール内で許容されるスレッド数。これはRaftstoreスレッドプールのサイズです。このスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
2
- 値の範囲:
[1, CPU * 10]
CPU
CPU コアの数を意味します。
store-io-pool-size
v5.3.0 の新機能
- Raft I/Oタスクを処理するスレッドの許容数。これはStoreWriterスレッドプールのサイズです。このスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
1
(v8.0.0 より前のバージョンのデフォルト値は0
です) - 最小値:
0
future-poll-size
future
駆動するスレッドの許容数- デフォルト値:
1
- 最小値:
0
より大きい
cmd-batch
- リクエストのバッチ処理を有効にするかどうかを制御します。有効にすると、書き込みパフォーマンスが大幅に向上します。
- デフォルト値:
true
inspect-interval
- TiKVは一定の間隔でRaftstoreコンポーネントのレイテンシーを検査します。このパラメータは検査間隔を指定します。レイテンシーがこの値を超えると、検査はタイムアウトとしてマークされます。
- タイムアウト検査の比率に基づいて、TiKV ノードが遅いかどうかを判断します。
- デフォルト値:
"100ms"
- 最小値:
"1ms"
raft-write-size-limit
v5.3.0 の新機能
- Raftデータがディスクに書き込まれるしきい値を決定します。データサイズがこの設定項目の値より大きい場合、データはディスクに書き込まれます。1の値が
store-io-pool-size
0
場合、この設定項目は有効になりません。 - デフォルト値:
1MiB
- 最小値:
0
evict-cache-on-memory-ratio
バージョン 7.5.0 の新機能
- TiKV のメモリ使用量がシステム使用可能メモリの 90% を超え、 Raftエントリ キャッシュが占有するメモリが使用メモリ*
evict-cache-on-memory-ratio
を超えると、TiKV はRaftエントリ キャッシュを排除します。 - この値が
0
に設定されている場合、この機能は無効であることを意味します。 - デフォルト値:
0.1
- 最小値:
0
periodic-full-compact-start-times
v7.6.0 の新機能
- TiKVが定期的なフルコンパクションを開始する特定の時刻を設定します。配列で複数のスケジュールを指定できます。例:
periodic-full-compact-start-times = ["03:00", "23:00"]
TiKV ノードのローカル タイム ゾーンに基づいて、TiKV が毎日午前 3 時と午後 11 時に完全圧縮を実行することを示します。periodic-full-compact-start-times = ["03:00 +0000", "23:00 +0000"]
、TiKV が UTC タイムゾーンで毎日午前 3:00 と午後 11:00 に完全圧縮を実行することを示します。periodic-full-compact-start-times = ["03:00 +0800", "23:00 +0800"]
、TiKV が UTC+08:00 タイムゾーンで毎日午前 3:00 と午後 11:00 に完全圧縮を実行することを示します。
- デフォルト値:
[]
。定期的な完全圧縮はデフォルトで無効になっていることを意味します。
periodic-full-compact-start-max-cpu
バージョン7.6.0の新機能
- TiKV 定期完全圧縮の最大 CPU 使用率を制限します。
- デフォルト値:
0.1
。これは、定期的な圧縮プロセスの最大 CPU 使用率が 10% であることを意味します。
follower-read-max-log-gap
v7.4.0 の新機能
- 読み取りリクエストの処理時にフォロワーが遅延できるログの最大数。この制限を超えると、読み取りリクエストは拒否されます。
- デフォルト値:
100
inspect-cpu-util-thd
バージョン7.6.0の新機能
- 低速ノード検出中に TiKV ノードがビジー状態かどうかを判断するための CPU 使用率しきい値。
- 値の範囲:
[0, 1]
- デフォルト値:
0.4
、つまり40%
です。
inspect-kvdb-interval
バージョン8.1.2の新機能
- TiKVで低速ノードを検出する際にKVディスクをチェックする間隔とタイムアウト。KVDBとRaftDBが同じマウントパスを共有している場合、この値は
0
(検出なし)に上書きされます。 - デフォルト値:
2s
min-pending-apply-region-count
バージョン8.0.0の新機能
- TiKV の起動時にRaftログの適用がビジー状態にあるリージョンの最大数。Raftstoreは、このようなリージョンの数がこの値を下回っている場合にのみリーダー転送を受け入れるため、ローリング再起動時の可用性の低下を軽減できます。
- デフォルト値:
10
request-voter-replicated-index-interval
v6.6.0 の新機能
- Witness ノードが投票ノードから複製されたRaftログ位置を定期的に取得する間隔を制御します。
- デフォルト値:
5m
、つまり 5 分です。
slow-trend-unsensitive-cause
v6.6.0 の新機能
- TiKVがSlowTrend検出アルゴリズムを使用する場合、この設定項目はレイテンシー検出の感度を制御します。値が高いほど、感度は低くなります。
- デフォルト値:
10
slow-trend-unsensitive-result
v6.6.0 の新機能
- TiKVがSlowTrend検出アルゴリズムを使用する場合、この設定項目はQPS検出の感度を制御します。値が高いほど感度は低くなります。
- デフォルト値:
0.5
コプロセッサ
コプロセッサーに関連するコンフィグレーション項目。
split-region-on-table
- テーブルごとにリージョンを分割するかどうかを決定します。この機能はTiDBモードでのみ使用することをお勧めします。
- デフォルト値:
false
batch-split-limit
- バッチ処理におけるリージョン分割のしきい値。この値を大きくすると、リージョン分割が高速化されます。
- デフォルト値:
10
- 最小値:
1
region-max-size
- リージョンの最大サイズ。この値を超えると、 リージョン は複数の Region に分割されます。
- デフォルト値:
region-split-size / 2 * 3
- 単位: KiB|MiB|GiB
region-split-size
- 新しく分割されたリージョンのサイズ。この値は推定値です。
- デフォルト値:
"96MiB"
- 単位: KiB|MiB|GiB
region-max-keys
- リージョン内で許容されるキーの最大数。この値を超えると、リージョンは複数のリージョンに分割されます。
- デフォルト値:
region-split-keys / 2 * 3
region-split-keys
- 新しく分割されたリージョン内のキーの数。この値は推定値です。
- デフォルト値:
960000
consistency-check-method
- データの整合性チェックの方法を指定します
- MVCCデータの整合性チェックの場合は値を
"mvcc"
に設定し、生データの整合性チェックの場合は値を"raw"
に設定します。 - デフォルト値:
"mvcc"
コプロセッサv2
coprocessor-plugin-directory
- コンパイルされたコプロセッサプラグインが配置されているディレクトリのパス。このディレクトリ内のプラグインはTiKVによって自動的にロードされます。
- この構成項目が設定されていない場合、コプロセッサ プラグインは無効になります。
- デフォルト値:
"./coprocessors"
enable-region-bucket
v6.1.0 の新機能
- リージョンをバケットと呼ばれるより小さな範囲に分割するかどうかを決定します。バケットは、スキャンの同時実行性を向上させるための同時実行クエリの単位として使用されます。バケットの設計の詳細については、 動的サイズリージョンを参照してください。
- デフォルト値: false
region-bucket-size
v6.1.0 の新機能
enable-region-bucket
が true の場合のバケットのサイズ。- デフォルト値: v7.3.0 以降、デフォルト値は
96MiB
から50MiB
に変更されます。
ロックスdb
RocksDBに関連するコンフィグレーション項目
max-background-jobs
- RocksDBのバックグラウンドスレッドの数。RocksDBスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
- CPU コア数が 10 の場合、デフォルト値は
9
です。 - CPU コア数が 8 の場合、デフォルト値は
7
です。 - CPU コア数が
N
の場合、デフォルト値はmax(2, min(N - 1, 9))
です。
- CPU コア数が 10 の場合、デフォルト値は
- 最小値:
2
max-background-flushes
- 同時バックグラウンド メンバーテーブル フラッシュ ジョブの最大数
- デフォルト値:
- CPU コア数が 10 の場合、デフォルト値は
3
です。 - CPU コア数が 8 の場合、デフォルト値は
2
です。 - CPU コア数が
N
の場合、デフォルト値は[(max-background-jobs + 3) / 4]
です。
- CPU コア数が 10 の場合、デフォルト値は
- 最小値:
1
max-sub-compactions
- RocksDBで同時に実行されるサブコンパクション操作の数
- デフォルト値:
3
- 最小値:
1
max-open-files
- RocksDBが開くことができるファイルの総数
- デフォルト値:
40960
- 最小値:
-1
max-manifest-file-size
- RocksDBマニフェストファイルの最大サイズ
- デフォルト値:
"128MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
create-if-missing
- DBスイッチを自動的に作成するかどうかを決定します
- デフォルト値:
true
wal-recovery-mode
- WALリカバリモード
- オプションの値:
"tolerate-corrupted-tail-records"
: すべてのログで不完全な末尾データを持つレコードを許容し、破棄します。"absolute-consistency"
: 破損したログが見つかった場合はリカバリを中止します"point-in-time"
: 最初の破損したログに遭遇するまでログを順番に回復します"skip-any-corrupted-records"
:災害後の復旧。データは可能な限り復旧され、破損したレコードはスキップされます。
- デフォルト値:
"point-in-time"
wal-dir
- WALファイルが保存されるディレクトリ。指定されていない場合、WALファイルはデータと同じディレクトリに保存されます。
- デフォルト値:
""
wal-ttl-seconds
- アーカイブされたWALファイルの有効期間。この値を超えると、システムはこれらのファイルを削除します。
- デフォルト値:
0
- 最小値:
0
- 単位: 秒
wal-size-limit
- アーカイブされたWALファイルのサイズ制限。この値を超えると、システムはこれらのファイルを削除します。
- デフォルト値:
0
- 最小値:
0
- 単位: B|KiB|MiB|GiB
max-total-wal-size
合計での最大 RocksDB WAL サイズは、
data-dir
ファイルのうち*.log
のサイズです。デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は"4GiB"
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は1
です。
stats-dump-period
統計がログに出力される間隔。
デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は"10m"
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は"0"
です。
compaction-readahead-size
- RocksDBの圧縮中に先読み機能を有効にし、先読みデータのサイズを指定します。機械式ディスクを使用している場合は、少なくとも2MiBに設定することをお勧めします。
- デフォルト値:
0
- 最小値:
0
- 単位: B|KiB|MiB|GiB
writable-file-max-buffer-size
- WritableFileWriteで使用される最大バッファサイズ
- デフォルト値:
"1MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
use-direct-io-for-flush-and-compaction
- バックグラウンドフラッシュとコンパクションにおいて、読み取りと書き込みの両方に
O_DIRECT
使用するかどうかを決定します。このオプションのパフォーマンスへの影響:O_DIRECT
有効にすると、OSバッファキャッシュのバイパスと汚染を防止しますが、後続のファイル読み取りではバッファキャッシュへの内容の再読み込みが必要になります。 - デフォルト値:
false
rate-bytes-per-sec
- Titanが無効になっている場合、この設定項目はRocksDBコンパクションのI/Oレートを制限し、トラフィックピーク時のフォアグラウンドの読み取りおよび書き込みパフォーマンスへのRocksDBコンパクションの影響を軽減します。Titanが有効になっている場合、この設定項目はRocksDBコンパクションとTitan GCの合計I/Oレートを制限します。RocksDBコンパクションとTitan GCのI/OまたはCPU消費量が大きすぎる場合は、ディスクI/O帯域幅と実際の書き込みトラフィックに応じて、この設定項目を適切な値に設定してください。
- デフォルト値:
10GiB
- 最小値:
0
- 単位: B|KiB|MiB|GiB
rate-limiter-refill-period
- I/Oトークンの補充頻度を制御します。値が小さいほどI/Oバーストは減少しますが、CPUオーバーヘッドが増加します。
- デフォルト値:
"100ms"
rate-limiter-mode
- RocksDBの圧縮レート制限モード
"write-only"
"all-io"
:"read-only"
- デフォルト値:
"write-only"
rate-limiter-auto-tuned
v5.0 の新機能
- RocksDBの圧縮レートリミッターの設定を、最近のワークロードに基づいて自動的に最適化するかどうかを決定します。この設定を有効にすると、圧縮保留バイト数が通常よりもわずかに多くなります。
- デフォルト値:
true
enable-pipelined-write
- パイプライン書き込みを有効にするかどうかを制御します。この設定を有効にすると、以前のパイプライン書き込みが使用されます。この設定を無効にすると、新しいパイプラインコミットメカニズムが使用されます。
- デフォルト値:
false
bytes-per-sync
- ファイルが非同期的に書き込まれている間に、OSがファイルをディスクに増分的に同期する速度
- デフォルト値:
"1MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
wal-bytes-per-sync
- WALファイルが書き込まれている間にOSがWALファイルをディスクに増分的に同期する速度
- デフォルト値:
"512KiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
info-log-max-size
- 情報ログの最大サイズ
- デフォルト値:
"1GiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
info-log-roll-time
- 情報ログが切り捨てられる時間間隔。値が
0s
の場合、ログは切り捨てられません。 - デフォルト値:
"0s"
info-log-keep-log-file-num
- 保存されるログファイルの最大数
- デフォルト値:
10
- 最小値:
0
info-log-dir
- ログが保存されるディレクトリ
- デフォルト値:
""
info-log-level
- RocksDBのログレベル
- デフォルト値:
"info"
write-buffer-flush-oldest-first
v6.6.0 の新機能
現在の RocksDB の
memtable
のメモリ使用量がしきい値に達したときに使用するフラッシュ戦略を指定します。デフォルト値:
false
値のオプション:
- データ量が最も大きい
false
:memtable
が SST ファイルにフラッシュされます。 true
:最初のmemtable
SSTファイルにフラッシュされます。この戦略はコールドデータのmemtable
クリアできるため、コールドデータとホットデータが明確に区別できるシナリオに適しています。
- データ量が最も大きい
write-buffer-limit
v6.6.0 の新機能
単一の TiKV 内のすべての RocksDB インスタンスの合計メモリ制限を
memtable
指定します。30
制限がないことを意味します。デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は0
となり、制限がないことを意味します。storage.engine="partitioned-raft-kv"
場合、デフォルト値はシステムメモリの合計サイズの 20% になります。
単位: KiB|MiB|GiB
track-and-verify-wals-in-manifest
v6.5.9、v7.1.5、v7.5.2、v8.0.0 の新機能
- RocksDB MANIFESTファイルにWrite Ahead Log(WAL)ファイルに関する情報を記録するかどうか、および起動時にWALファイルの整合性を検証するかどうかを制御します。詳細については、RocksDB MANIFESTでWALを追跡するを参照してください。
- デフォルト値:
true
- 値のオプション:
true
: WAL ファイルに関する情報を MANIFEST ファイルに記録し、起動時に WAL ファイルの整合性を検証します。false
: MANIFEST ファイルに WAL ファイルに関する情報を記録せず、起動時に WAL ファイルの整合性を検証しません。
enable-multi-batch-write
v6.2.0 の新機能
- RocksDB 書き込み最適化を有効にするかどうかを制御します。これにより、WriteBatch の内容を memtable に同時に書き込むことができ、書き込みレイテンシーが短縮されます。
- デフォルト値: なし。ただし、明示的に
false
に設定した場合、またはrocksdb.enable-pipelined-write
またはrocksdb.enable-unordered-write
有効になっている場合を除き、デフォルトで有効になります。
rocksdb.titan
Titan に関連するコンフィグレーション項目。
enabled
注記:
- ワイド テーブルと JSON データの書き込みおよびポイント クエリのパフォーマンスを向上させるために、TiDB v7.6.0 以降では既定値が
false
からtrue
に変更され、Titan がデフォルトで有効になります。- v7.6.0 以降のバージョンにアップグレードされた既存のクラスターは元の構成を保持します。つまり、Titan が明示的に有効になっていない場合は、引き続き RocksDB が使用されます。
- TiDB v7.6.0以降にアップグレードする前にクラスタでTitanが有効になっている場合、アップグレード後もTitanは保持され、アップグレード前の
min-blob-size
設定が保持されます。アップグレード前に明示的に値を設定しない場合は、アップグレード後のクラスタ構成の安定性を確保するために、以前のバージョン1KiB
のデフォルト値が保持されます。
- Titan を有効または無効にします。
- デフォルト値:
true
dirname
- Titan Blobファイルが保存されているディレクトリ
- デフォルト値:
"titandb"
disable-gc
- Titan が BLOB ファイルに対して実行するガベージ コレクション (GC) を無効にするかどうかを決定します。
- デフォルト値:
false
max-background-gc
- Titan の GC スレッドの最大数。TiKVの「詳細」 > 「スレッド CPU」 > 「RocksDB CPU」パネルで、Titan GC スレッドが長時間にわたって満杯になっていることが確認された場合は、Titan GC スレッドプールのサイズを増やすことを検討してください。
- デフォルト値:
1
。v8.0.0 より前では、デフォルト値は4
です。 - 最小値:
1
rocksdb.defaultcf | rocksdb.writecf | rocksdb.lockcf | rocksdb.raftcf
rocksdb.defaultcf
rocksdb.writecf
rocksdb.lockcf
するコンフィグレーション項目。
block-size
- RocksDBブロックのデフォルトサイズ
defaultcf
とwritecf
のデフォルト値:"32KiB"
lockcf
のデフォルト値:"16KiB"
- 最小値:
"1KiB"
- 単位: KiB|MiB|GiB
block-cache-size
- RocksDB ブロックのキャッシュ サイズ。
defaultcf
のデフォルト値:Total machine memory * 25%
writecf
のデフォルト値:Total machine memory * 15%
lockcf
のデフォルト値:Total machine memory * 2%
- 最小値:
0
- 単位: KiB|MiB|GiB
disable-block-cache
- ブロックキャッシュを有効または無効にする
- デフォルト値:
false
cache-index-and-filter-blocks
- インデックスとフィルタのキャッシュを有効または無効にする
- デフォルト値:
true
pin-l0-filter-and-index-blocks
- レベル 0 SST ファイルのインデックス ブロックとフィルター ブロックをメモリに固定するかどうかを決定します。
- デフォルト値:
true
use-bloom-filter
- ブルームフィルターを有効または無効にする
- デフォルト値:
true
optimize-filters-for-hits
- フィルタのヒット率を最適化するかどうかを決定します
defaultcf
のデフォルト値:true
writecf
とlockcf
のデフォルト値:false
optimize-filters-for-memory
v7.2.0 の新機能
- メモリの内部断片化を最小限に抑えるブルーム/リボン フィルターを生成するかどうかを決定します。
- この構成項目は
format-version
>= 5 の場合にのみ有効になることに注意してください。 - デフォルト値:
false
whole-key-filtering
- キー全体をブルームフィルターに入れるかどうかを決定します
defaultcf
とlockcf
のデフォルト値:true
writecf
のデフォルト値:false
bloom-filter-bits-per-key
- ブルームフィルターが各キーに予約する長さ
- デフォルト値:
10
- 単位: バイト
block-based-bloom-filter
- 各ブロックがブルームフィルターを作成するかどうかを決定します
- デフォルト値:
false
ribbon-filter-above-level
v7.2.0 の新機能
- この値以上のレベルにはリボンフィルターを使用し、この値未満のレベルには非ブロックベースのブルームフィルターを使用するかどうかを決定します。この設定項目が設定されている場合、
block-based-bloom-filter
無視されます。 - この構成項目は
format-version
>= 5 の場合にのみ有効になることに注意してください。 - デフォルト値:
false
read-amp-bytes-per-bit
- 読み取り増幅の統計を有効または無効にします。
- オプションの値:
0
(無効)、>0
(有効)。 - デフォルト値:
0
- 最小値:
0
compression-per-level
- 各レベルのデフォルトの圧縮アルゴリズム
defaultcf
のデフォルト値: ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"]writecf
のデフォルト値: ["no", "no", "lz4", "lz4", "lz4", "zstd", "zstd"]lockcf
のデフォルト値: ["no", "no", "no", "no", "no", "no", "no"]
bottommost-level-compression
- 最レイヤーの圧縮アルゴリズムを設定します。この設定項目は
compression-per-level
設定を上書きします。 - RocksDB は、データが LSM ツリーに書き込まれた時点から、
compression-per-level
レイヤーで指定された最後の圧縮アルゴリズムを最下層に直接採用しません。3bottommost-level-compression
、最レイヤーが最初から圧縮効果が最も高い圧縮アルゴリズムを使用できるようになります。 - 最レイヤーに圧縮アルゴリズムを設定しない場合は、この構成項目の値を
disable
に設定します。 - デフォルト値:
"zstd"
write-buffer-size
- メモリテーブルのサイズ
defaultcf
とwritecf
のデフォルト値:"128MiB"
lockcf
のデフォルト値:storage.engine="raft-kv"
場合、デフォルト値は"32MiB"
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は"4MiB"
です。
- 最小値:
0
- 単位: KiB|MiB|GiB
max-write-buffer-number
- memtableの最大数。1
storage.flow-control.enable
true
に設定すると、storage.flow-control.memtables-threshold
この構成項目を上書きします。 - デフォルト値:
5
- 最小値:
0
min-write-buffer-number-to-merge
- フラッシュをトリガーするために必要な最小のmemtable数
- デフォルト値:
1
- 最小値:
0
max-bytes-for-level-base
- ベースレベル(レベル1)の最大バイト数。通常、memtableのサイズの4倍に設定されます。レベル1のデータサイズが制限値
max-bytes-for-level-base
に達すると、レベル1のSSTファイルと、それらに重複するレベル2のSSTファイルが圧縮されます。 defaultcf
とwritecf
のデフォルト値:"512MiB"
lockcf
のデフォルト値:"128MiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
- 不要な圧縮を減らすために、
max-bytes-for-level-base
の値はL0のデータ量とほぼ同じに設定することをお勧めします。たとえば、圧縮方法が「no:no:lz4:lz4:lz4:lz4:lz4」の場合、L0とL1は圧縮されておらず、L0の圧縮のトリガー条件はSSTファイルの数が4(デフォルト値)に達することであるため、max-bytes-for-level-base
値はwrite-buffer-size * 4
にする必要があります。L0とL1の両方で圧縮が採用されている場合、memtableから圧縮されたSSTファイルのサイズを把握するには、RocksDBログを分析する必要があります。たとえば、ファイルサイズが32MiBの場合、max-bytes-for-level-base
の値を128MiB(32 MiB * 4
)に設定することをお勧めします。
target-file-size-base
- ベースレベルでのターゲットファイルのサイズ。値が
enable-compaction-guard
true
場合、この値はcompaction-guard-max-output-file-size
で上書きされます。 - デフォルト値:
"8MiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
level0-file-num-compaction-trigger
- 圧縮をトリガーするL0のファイルの最大数
defaultcf
とwritecf
のデフォルト値:4
lockcf
のデフォルト値:1
- 最小値:
0
level0-slowdown-writes-trigger
- 書き込み停止を引き起こすL0ファイルの最大数。1
storage.flow-control.enable
true
に設定した場合、storage.flow-control.l0-files-threshold
この設定項目を上書きします。 - デフォルト値:
20
- 最小値:
0
level0-stop-writes-trigger
- 書き込みを完全にブロックするために必要なL0のファイルの最大数
- デフォルト値:
36
- 最小値:
0
max-compaction-bytes
- 圧縮ごとにディスクに書き込まれる最大バイト数
- デフォルト値:
"2GiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
compaction-pri
- 圧縮の優先タイプ
- オプションの値:
"by-compensated-size"
: ファイル サイズの順にファイルを圧縮し、大きなファイルは優先順位を高くして圧縮します。"oldest-largest-seq-first"
: 更新時刻が最も古いファイルの圧縮を優先します。この値は、狭い範囲でホットキーを更新する場合にのみ使用してください。"oldest-smallest-seq-first"
: 長期間にわたって次のレベルに圧縮されない範囲を持つファイルの圧縮を優先します。キー空間全体でホットキーをランダムに更新する場合、この値により書き込み増幅がわずかに軽減される可能性があります。"min-overlapping-ratio"
: オーバーラップ率の高いファイルの圧縮を優先します。ファイルの各レベルが小さい場合(the file size in the next level
÷the file size in this level
の結果が小さい場合)、TiKV はこのファイルを最初に圧縮します。多くの場合、この値は書き込み増幅を効果的に削減できます。
defaultcf
とwritecf
のデフォルト値:"min-overlapping-ratio"
lockcf
のデフォルト値:"by-compensated-size"
dynamic-level-bytes
- 動的レベルバイトを最適化するかどうかを決定します
- デフォルト値:
true
num-levels
- RocksDBファイルの最大レベル数
- デフォルト値:
7
max-bytes-for-level-multiplier
- 各レイヤーのデフォルトの増幅倍数
- デフォルト値:
10
compaction-style
- 圧縮方法
"universal"
"fifo"
:"level"
- デフォルト値:
"level"
disable-auto-compactions
- 自動圧縮を無効にするかどうかを決定します。
- デフォルト値:
false
soft-pending-compaction-bytes-limit
- 保留中の圧縮バイトのソフト制限。1
storage.flow-control.enable
true
に設定した場合、storage.flow-control.soft-pending-compaction-bytes-limit
この設定項目を上書きします。 - デフォルト値:
"192GiB"
- 単位: KiB|MiB|GiB
hard-pending-compaction-bytes-limit
- 保留中の圧縮バイト数のハードリミット。1
true
storage.flow-control.enable
設定した場合、storage.flow-control.hard-pending-compaction-bytes-limit
この設定項目を上書きします。 - デフォルト値:
"256GiB"
- 単位: KiB|MiB|GiB
enable-compaction-guard
- コンパクションガードを有効または無効にします。これは、TiKVリージョンの境界でSSTファイルを分割する最適化です。この最適化により、コンパクションI/Oが削減され、TiKVはより大きなSSTファイルサイズ(つまり、全体的なSSTファイルの数が少ない)を使用できるようになります。また、リージョンの移行時に古いデータを効率的にクリーンアップできます。
defaultcf
とwritecf
のデフォルト値:true
lockcf
のデフォルト値:false
compaction-guard-min-output-file-size
- 圧縮ガードが有効になっている場合のSSTファイルの最小サイズ。この設定により、圧縮ガードが有効になっているときにSSTファイルが小さすぎる状態になるのを防ぎます。
- デフォルト値:
"8MiB"
- 単位: KiB|MiB|GiB
compaction-guard-max-output-file-size
- 圧縮ガードが有効な場合のSSTファイルの最大サイズ。この設定により、圧縮ガードが有効な場合にSSTファイルが大きくなりすぎるのを防ぎます。この設定は、同じカラムファミリーの
target-file-size-base
オーバーライドします。 - デフォルト値:
"128MiB"
- 単位: KiB|MiB|GiB
format-version
v6.2.0 の新機能
SSTファイルのフォーマットバージョン。この設定項目は新しく書き込まれるテーブルにのみ影響します。既存のテーブルの場合、バージョン情報はフッターから読み取られます。
オプションの値:
0
: すべてのTiKVバージョンで読み取り可能です。デフォルトのチェックサムタイプはCRC32であり、このバージョンではチェックサムタイプの変更はサポートされていません。1
: すべてのTiKVバージョンで読み取り可能です。xxHashなどのデフォルト以外のチェックサムタイプをサポートします。RocksDBは、チェックサムタイプがCRC32以外の場合にのみデータを書き込みます。(バージョン0
は自動的にアップグレードされます)2
: すべてのTiKVバージョンで読み取り可能です。LZ4、BZip2、Zlib圧縮方式を使用して圧縮ブロックのエンコーディングを変更します。3
: TiKV v2.1以降のバージョンで読み取ることができます。インデックスブロック内のキーのエンコーディングを変更します。4
: TiKV v3.0以降のバージョンで読み取ることができます。インデックスブロック内の値のエンコーディングを変更します。5
: TiKV v6.1以降のバージョンで読み取り可能です。フルフィルターとパーティションフィルターは、異なるスキーマを使用した、より高速で正確なブルームフィルター実装を使用します。
デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は2
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は5
です。
ttl
バージョン7.2.0の新機能
- TTLよりも古い更新を含むSSTファイルは自動的に圧縮対象として選択されます。これらのSSTファイルは、最下層または最下層ファイルまで圧縮されるように、段階的に圧縮されます。
- デフォルト値:
"0s"
。これは、デフォルトでは SST ファイルが選択されていないことを意味します。 - 単位: s(秒)|h(時間)|d(日)
periodic-compaction-seconds
v7.2.0 の新機能
- 定期的な圧縮の時間間隔。この値より古い更新を含む SST ファイルが圧縮対象として選択され、これらの SST ファイルが元々存在していたレベルと同じレベルに書き換えられます。
- デフォルト値:
"0s"
。定期的な圧縮はデフォルトで無効になっていることを意味します。 - 単位: s(秒)|h(時間)|d(日)
max-compactions
バージョン6.6.0の新機能
- 同時実行可能な圧縮タスクの最大数。値
0
制限なしを意味します。 - デフォルト値:
0
rocksdb.defaultcf.titan
注記:
Titan は
rocksdb.defaultcf
でのみ有効化できます。rocksdb.writecf
では Titan を有効化できません。
rocksdb.defaultcf.titan
に関連するコンフィグレーション項目です。
min-blob-size
注記:
- TiDB v7.6.0以降、ワイドテーブルおよびJSONデータの書き込みとポイントクエリのパフォーマンスを向上させるため、Titanがデフォルトで有効化されました。デフォルト値は
min-blob-size
でしたが、1KiB
から32KiB
に変更されました。つまり、32KiB
超える値はTitanに保存され、その他のデータは引き続きRocksDBに保存されます。- 構成の一貫性を確保するために、既存のクラスターを TiDB v7.6.0 以降のバージョンにアップグレードする場合、アップグレード前に
min-blob-size
明示的に設定しないと、TiDB は以前のデフォルト値1KiB
を保持します。32KiB
より小さい値は、範囲スキャンのパフォーマンスに影響を与える可能性があります。ただし、ワークロードが主に大量の書き込みとポイントクエリである場合は、パフォーマンスを向上させるために値をmin-blob-size
に下げることを検討してください。
- BLOBファイルに格納される最小値。指定されたサイズより小さい値はLSMツリーに格納されます。
- デフォルト値:
"32KiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
blob-file-compression
注記:
- Snappy 圧縮ファイルは公式Snappyフォーマットである必要があります。その他の Snappy 圧縮形式はサポートされていません。
- TiDB v7.6.0 以降、デフォルト値
blob-file-compression
は"lz4"
から"zstd"
に変更されます。
- BLOBファイルで使用される圧縮アルゴリズム
"bzip2"
"zlib"
"lz4"
"no"
"snappy"
"lz4hc"
"zstd"
- デフォルト値:
"zstd"
zstd-dict-size
- zstd 辞書の圧縮サイズ。デフォルト値は
"0KiB"
で、これは zstd 辞書の圧縮を無効にすることを意味します。この場合、Titan は単一の値に基づいてデータを圧縮しますが、RocksDB はブロックに基づいてデータを圧縮します (デフォルトでは32KiB
)。Titan 値の平均サイズが32KiB
未満の場合、Titan の圧縮率は RocksDB よりも低くなります。JSON を例にとると、Titan のストア サイズは RocksDB よりも 30% ~ 50% 大きくなる可能性があります。実際の圧縮率は、値の内容が圧縮に適しているかどうか、および異なる値間の類似性によって異なります。zstd-dict-size
構成すると (たとえば、16KiB
に設定すると)、zstd 辞書の圧縮を有効にして圧縮率を上げることができます。実際のストア サイズは RocksDB よりも小さくなる可能性があります。ただし、zstd 辞書の圧縮により、特定のワークロードで約 10% のパフォーマンス低下が発生する可能性があります。 - デフォルト値:
"0KiB"
- 単位: KiB|MiB|GiB
blob-cache-size
- BLOBファイルのキャッシュサイズ
- デフォルト値:
"0GiB"
- 最小値:
0
- 推奨値:
0
。TiKV v8.0.0以降、設定項目shared-blob-cache
が導入され、デフォルトで有効になっているため、blob-cache-size
別途設定する必要はありません。7blob-cache-size
設定は、shared-blob-cache
false
に設定されている場合にのみ有効になります。 - 単位: KiB|MiB|GiB
shared-blob-cache
(v8.0.0 の新機能)
- Titan BLOB ファイルと RocksDB ブロック ファイルの共有キャッシュを有効にするかどうかを制御します。
- デフォルト値:
true
。共有キャッシュが有効な場合、ブロックファイルの優先度が高くなります。つまり、TiKVはブロックファイルのキャッシュニーズを満たすことを優先し、残りのキャッシュをBLOBファイルに使用します。
min-gc-batch-size
- GCを1回実行するために必要なBlobファイルの最小合計サイズ
- デフォルト値:
"16MiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
max-gc-batch-size
- 一度にGCを実行できるBlobファイルの最大合計サイズ
- デフォルト値:
"64MiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
discardable-ratio
BLOBファイル内の古いデータ(対応するキーが更新または削除されたデータ)の割合が以下のしきい値を超えると、Titan GCがトリガーされます。TitanがこのBLOBファイルの有効なデータを別のファイルに書き込む際、
discardable-ratio
値を使用して、書き込み増幅とスペース増幅の上限を推定できます(圧縮が無効の場合)。書き込み増幅の上限 = 1 /
discardable-ratio
空間増幅の上限 = 1 / (1 -
discardable-ratio
)これら2つの式から、値
discardable_ratio
を減らすとスペース増幅は減少しますが、TitanでのGCの頻度は増加します。値を増やすとTitan GCの頻度が減少し、I/O帯域幅とCPU使用率が低下しますが、ディスク使用量は増加します。デフォルト値:
0.5
最小値:
0
最大値:
1
sample-ratio
- GC 中にファイルをサンプリングするときの (Blob ファイルから読み取られたデータ / Blob ファイル全体) の比率
- デフォルト値:
0.1
- 最小値:
0
- 最大値:
1
merge-small-file-threshold
- BLOBファイルのサイズがこの値より小さい場合でも、そのBLOBファイルはGCの対象として選択される可能性があります。この場合、
discardable-ratio
無視されます。 - デフォルト値:
"8MiB"
- 最小値:
0
- 単位: KiB|MiB|GiB
blob-run-mode
- Titanの実行モードを指定します。
- オプションの値:
normal
: 値のサイズがmin-blob-size
超えると、データを BLOB ファイルに書き込みます。read-only
: BLOB ファイルへの新しいデータの書き込みを拒否しますが、BLOB ファイルから元のデータは読み取ります。fallback
: BLOB ファイル内のデータを LSM に書き戻します。
- デフォルト値:
normal
level-merge
- 読み取りパフォーマンスを最適化するかどうかを決定します。1
level-merge
有効にすると、書き込み増幅が強化されます。 - デフォルト値:
false
ラフトDB
raftdb
に関連するコンフィグレーション項目
max-background-jobs
- RocksDBのバックグラウンドスレッドの数。RocksDBスレッドプールのサイズを変更する場合は、 TiKV スレッドプールのパフォーマンスチューニングを参照してください。
- デフォルト値:
4
- 最小値:
2
max-sub-compactions
- RocksDBで実行される同時サブコンパクション操作の数
- デフォルト値:
2
- 最小値:
1
max-open-files
- RocksDBが開くことができるファイルの総数
- デフォルト値:
40960
- 最小値:
-1
max-manifest-file-size
- RocksDBマニフェストファイルの最大サイズ
- デフォルト値:
"20MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
create-if-missing
- 値が
true
の場合、データベースが存在しない場合に作成されます。 - デフォルト値:
true
stats-dump-period
- 統計がログに出力される間隔
- デフォルト値:
10m
wal-dir
- Raft RocksDB WALファイルが保存されるディレクトリ。WALの絶対ディレクトリパスです。この設定項目を
rocksdb.wal-dir
と同じ値に設定しないでください。 - この構成項目が設定されていない場合、ログ ファイルはデータと同じディレクトリに保存されます。
- マシンにディスクが 2 つある場合、RocksDB データと WAL ログを別のディスクに保存すると、パフォーマンスが向上します。
- デフォルト値:
""
wal-ttl-seconds
- アーカイブされたWALファイルを保持する期間を指定します。この値を超えると、システムはこれらのファイルを削除します。
- デフォルト値:
0
- 最小値:
0
- 単位:秒
wal-size-limit
- アーカイブされたWALファイルのサイズ制限。この値を超えると、システムはこれらのファイルを削除します。
- デフォルト値:
0
- 最小値:
0
- 単位: B|KiB|MiB|GiB
max-total-wal-size
- RocksDB WALの合計最大サイズ
- デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は"4GiB"
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は1
です。
compaction-readahead-size
- RocksDB の圧縮中に先読み機能を有効にするかどうか、および先読みデータのサイズを指定するかどうかを制御します。
- 機械式ディスクを使用する場合は、値を少なくとも
2MiB
に設定することをお勧めします。 - デフォルト値:
0
- 最小値:
0
- 単位: B|KiB|MiB|GiB
writable-file-max-buffer-size
- WritableFileWriteで使用される最大バッファサイズ
- デフォルト値:
"1MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
use-direct-io-for-flush-and-compaction
- バックグラウンドフラッシュとコンパクションにおいて、読み取りと書き込みの両方に
O_DIRECT
使用するかどうかを決定します。このオプションのパフォーマンスへの影響:O_DIRECT
有効にすると、OSバッファキャッシュのバイパスと汚染を防止しますが、後続のファイル読み取りではバッファキャッシュへの内容の再読み込みが必要になります。 - デフォルト値:
false
enable-pipelined-write
- パイプライン書き込みを有効にするかどうかを制御します。この設定を有効にすると、以前のパイプライン書き込みが使用されます。この設定を無効にすると、新しいパイプラインコミットメカニズムが使用されます。
- デフォルト値:
true
allow-concurrent-memtable-write
- 同時メモリテーブル書き込みを有効にするかどうかを制御します。
- デフォルト値:
true
bytes-per-sync
- ファイルが非同期的に書き込まれている間に、OSがファイルをディスクに増分的に同期する速度
- デフォルト値:
"1MiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
wal-bytes-per-sync
- WALファイルが書き込まれるときにOSがWALファイルをディスクに増分同期する速度
- デフォルト値:
"512KiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
info-log-max-size
- 情報ログの最大サイズ
- デフォルト値:
"1GiB"
- 最小値:
0
- 単位: B|KiB|MiB|GiB
info-log-roll-time
- 情報ログを切り捨てる間隔。値が
0s
の場合、ログは切り捨てられません。 - デフォルト値:
"0s"
(ログは切り捨てられない)
info-log-keep-log-file-num
- RaftDB に保存される情報ログファイルの最大数
- デフォルト値:
10
- 最小値:
0
info-log-dir
- 情報ログが保存されるディレクトリ
- デフォルト値:
""
info-log-level
- RaftDBのログレベル
- デフォルト値:
"info"
いかだエンジン
Raft Engineに関連するコンフィグレーション項目。
注記:
- Raft Engine を初めて有効にすると、TiKV は RocksDB からRaft Engineにデータを転送します。そのため、TiKV が起動するまで数十秒ほど待つ必要があります。
- TiDB v5.4.0 のRaft Engineのデータ形式は、以前の TiDB バージョンと互換性がありません。そのため、TiDB クラスターを v5.4.0 から以前のバージョンにダウングレードする必要がある場合は、ダウングレードする前に、 Raft Engineを
enable
からfalse
に設定して無効化し、TiKV を再起動して設定を有効にしてください。
enable
- Raftログの保存にRaft Engineを使用するかどうかを決定します。有効にすると、
raftdb
の設定は無視されます。 - デフォルト値:
true
dir
- raft ログファイルが保存されるディレクトリ。ディレクトリが存在しない場合は、TiKV の起動時に作成されます。
- この構成項目が設定されていない場合は
{data-dir}/raft-engine
使用されます。 - マシンに複数のディスクがある場合は、TiKV のパフォーマンスを向上させるために、 Raft Engineのデータを別のディスクに保存することをお勧めします。
- デフォルト値:
""
batch-compression-threshold
- ログバッチのしきい値サイズを指定します。この設定値より大きいログバッチは圧縮されます。この設定項目を
0
に設定すると、圧縮は無効になります。 - デフォルト値:
"8KiB"
bytes-per-sync
- バッファリングされた書き込みの最大累積サイズを指定します。この設定値を超えると、バッファリングされた書き込みはディスクにフラッシュされます。
- この構成項目を
0
に設定すると、増分同期は無効になります。 - v6.5.0 より前では、デフォルト値は
"4MiB"
です。
target-file-size
- ログファイルの最大サイズを指定します。ログファイルがこの値より大きい場合、ログファイルはローテーションされます。
- デフォルト値:
"128MiB"
purge-threshold
- メインログキューのしきい値サイズを指定します。この設定値を超えると、メインログキューは消去されます。
- この設定を使用して、 Raft Engineのディスク領域の使用量を調整できます。
- デフォルト値:
"10GiB"
recovery-mode
- 回復中にファイルの破損を処理する方法を決定します。
"tolerate-any-corruption"
"tolerate-tail-corruption"
オプション:"absolute-consistency"
- デフォルト値:
"tolerate-tail-corruption"
recovery-read-block-size
- リカバリ中にログ ファイルを読み取るための最小 I/O サイズ。
- デフォルト値:
"16KiB"
- 最小値:
"512B"
recovery-threads
- ログ ファイルをスキャンして回復するために使用されるスレッドの数。
- デフォルト値:
4
- 最小値:
1
memory-limit
- Raft Engineのメモリ使用量の制限を指定します。
- この構成値が設定されていない場合、使用可能なシステムメモリの 15% が使用されます。
- デフォルト値:
Total machine memory * 15%
format-version
v6.3.0 の新機能
注記:
format-version
2
に設定した後、TiKV クラスターを v6.3.0 から以前のバージョンにダウングレードする必要がある場合は、ダウングレード前に次の手順を実行します。
enable
をfalse
に設定してRaft Engineを無効にし、TiKV を再起動して設定を有効にします。format-version
を1
に設定します。enable
をtrue
に設定してRaft Engineを有効にし、TiKV を再起動して設定を有効にします。
- Raft Engineのログ ファイルのバージョンを指定します。
- 値のオプション:
1
: TiKV v6.3.0 より前のバージョンのデフォルトのログファイルバージョン。TiKV >= v6.1.0 で読み取ることができます。2
: ログのリサイクルをサポートします。TiKV >= v6.3.0 で読み取ることができます。
- デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は2
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は5
です。
enable-log-recycle
バージョン6.3.0の新機能
注記:
この構成項目は、
format-version
>= 2 の場合にのみ使用できます。
- Raft Engineで古いログファイルをリサイクルするかどうかを指定します。有効にすると、論理的にパージされたログファイルがリサイクル用に予約されます。これにより、書き込みワークロードのロングテールレイテンシーが削減されます。
- デフォルト値:
true
prefill-for-recycle
v7.0.0 の新機能
注記:
この構成項目は、
enable-log-recycle
true
に設定されている場合にのみ有効になります。
- Raft Engineのログリサイクル用に空のログファイルを生成するかどうかを決定します。有効にすると、 Raft Engineは初期化中にログリサイクル用の空のログファイルを自動的にバッチ処理し、初期化直後にログリサイクルが有効になります。
- デフォルト値:
false
compression-level
v7.4.0 の新機能
- Raft EngineがRaftログファイルを書き込む際に使用するLZ4アルゴリズムの圧縮効率を設定します。値が小さいほど圧縮速度は速くなりますが、圧縮率は低くなります。
- 範囲:
[1, 16]
- デフォルト値:
1
安全
セキュリティに関するコンフィグレーション項目。
ca-path
- CAファイルのパス
- デフォルト値:
""
cert-path
- X.509証明書を含むPrivacy Enhanced Mail(PEM)ファイルのパス
- デフォルト値:
""
key-path
- X.509キーを含むPEMファイルのパス
- デフォルト値:
""
cert-allowed-cn
- クライアントが提示する証明書で許容されるX.509共通名のリスト。提示された共通名がリスト内のエントリのいずれかと完全に一致する場合にのみ、リクエストが許可されます。
- デフォルト値:
[]
。これは、クライアント証明書の CN チェックがデフォルトで無効になっていることを意味します。
redact-info-log
v4.0.8 の新機能
- この設定項目は、ログ編集を有効または無効にします。設定値が
true
に設定されている場合、ログ内のすべてのユーザーデータは?
に置き換えられます。 - デフォルト値:
false
セキュリティ.暗号化
保存時の暗号化 (TDE)に関連するコンフィグレーション項目。
data-encryption-method
- データファイルの暗号化方法
- 値のオプション: "plaintext"、"aes128-ctr"、"aes192-ctr"、"aes256-ctr"、および "sm4-ctr" (v6.3.0 以降でサポート)
- 「プレーンテキスト」以外の値は暗号化が有効になっていることを意味し、その場合はマスター キーを指定する必要があります。
- デフォルト値:
"plaintext"
data-key-rotation-period
- TiKV がデータ暗号化キーをローテーションする頻度を指定します。
- デフォルト値:
7d
enable-file-dictionary-log
- TiKV が暗号化メタデータを管理するときに、I/O とミューテックスの競合を減らすための最適化を有効にします。
- この構成パラメータが有効になっている場合(デフォルト)に互換性の問題を回避するには、詳細については保存時の暗号化- TiKVバージョン間の互換性参照してください。
- デフォルト値:
true
master-key
- 暗号化が有効になっている場合、マスターキーを指定します。マスターキーの設定方法については、 保存時の暗号化- 暗号化の設定参照してください。
previous-master-key
- 新しいマスターキーをローテーションする際に使用する古いマスターキーを指定します。設定形式は
master-key
と同じです。マスターキーの設定方法については、 保存時の暗号化- 暗号化の設定参照してください。
輸入
TiDB Lightning のインポートとBR復元に関連するコンフィグレーション項目。
num-threads
- RPCリクエストを処理するスレッドの数
- デフォルト値:
8
- 最小値:
1
stream-channel-window
- ストリームチャンネルのウィンドウサイズ。チャンネルがいっぱいになると、ストリームはブロックされます。
- デフォルト値:
128
memory-use-ratio
v6.5.0 の新機能
- v6.5.0以降、PITRはメモリ内のバックアップログファイルへの直接アクセスとデータの復元をサポートします。この設定項目は、PITRに使用可能なメモリとTiKVの総メモリの比率を指定します。
- 値の範囲: [0.0, 0.5]
- デフォルト値:
0.3
。これは、システムメモリの30%がPITRに使用できることを意味します。値が0.0
場合、PITRはログファイルをローカルディレクトリにダウンロードすることで実行されます。
注記:
v6.5.0 より前のバージョンでは、ポイントインタイムリカバリ (PITR) は、バックアップ ファイルをローカル ディレクトリにダウンロードすることによるデータの復元のみをサポートします。
GC
batch-keys
- 1回のバッチでガベージコレクションされるキーの数
- デフォルト値:
512
max-write-bytes-per-sec
- GC ワーカーが 1 秒間に RocksDB に書き込むことができる最大バイト数。
- 値が
0
に設定されている場合、制限はありません。 - デフォルト値:
"0"
enable-compaction-filter
v5.0 の新機能
- 圧縮フィルタ機能でGCを有効にするかどうかを制御します
- デフォルト値:
true
ratio-threshold
- GC をトリガーするガベージ率のしきい値。
- デフォルト値:
1.1
num-threads
v6.5.8、v7.1.4、v7.5.1、v7.6.0 の新機能
enable-compaction-filter
場合の GC スレッド数はfalse
です。- デフォルト値:
1
バックアップ
BRバックアップに関連するコンフィグレーション項目。
num-threads
- バックアップを処理するワーカースレッドの数
- デフォルト値:
MIN(CPU * 0.5, 8)
- 値の範囲:
[1, CPU]
- 最小値:
1
batch-size
- 1回のバッチでバックアップするデータ範囲の数
- デフォルト値:
8
sst-max-size
- バックアップSSTファイルサイズのしきい値。TiKVリージョン内のバックアップファイルのサイズがこのしきい値を超える場合、ファイルは複数のファイルにバックアップされ、TiKVリージョンは複数のリージョン範囲に分割されます。分割されたリージョン内の各ファイルのサイズは、
sst-max-size
と同じ(またはわずかに大きい)です。 - たとえば、リージョン
[a,e)
のバックアップ ファイルのサイズがsst-max-size
より大きい場合、ファイルはリージョン[a,b)
[c,d)
複数のファイルにバックアップされ、[d,e)
[b,c)
のサイズは[a,b)
[b,c)
と同じ (またはsst-max-size
に大きい[c,d)
になります。 - デフォルト値:
"144MiB"
enable-auto-tune
v5.4.0 の新機能
- クラスタリソースの使用率が高い場合に、クラスタへの影響を軽減するために、バックアップタスクで使用されるリソースを制限するかどうかを制御します。詳細については、 BRオートチューンを参照してください。
- デフォルト値:
true
s3-multi-part-size
バージョン5.3.2の新機能
注記:
この設定は、S3 のレート制限によるバックアップ失敗に対処するために導入されました。この問題はバックアップデータのstorage構造の改善で修正されました。そのため、この設定はバージョン 6.1.1 以降では非推奨となり、推奨されなくなりました。
- バックアップ中にS3へのマルチパートアップロードを実行する際に使用するパートサイズ。この設定値を調整することで、S3に送信されるリクエストの数を制御できます。
- S3にデータをバックアップし、バックアップファイルがこの設定項目の値より大きい場合、 マルチパートアップロード自動的に有効になります。圧縮率に基づくと、96MiBのリージョンで生成されるバックアップファイルは約10MiB~30MiBになります。
- デフォルト値: 5MiB
backup.hadoop
home
- HDFSシェルコマンドの場所を指定し、TiKVがシェルコマンドを見つけられるようにします。この設定項目は環境変数
$HADOOP_HOME
と同じ効果を持ちます。 - デフォルト値:
""
linux-user
- TiKV が HDFS シェル コマンドを実行する Linux ユーザーを指定します。
- この構成項目が設定されていない場合、TiKV は現在の Linux ユーザーを使用します。
- デフォルト値:
""
ログバックアップ
ログバックアップに関連するコンフィグレーション項目。
v6.2.0の新機能enable
- ログ バックアップを有効にするかどうかを決定します。
- デフォルト値:
true
file-size-limit
v6.2.0 の新機能
- 保存されるバックアップ ログ データのサイズ制限。
- デフォルト値: 256MiB
- 注: 通常、値
file-size-limit
は外部storageに表示されるバックアップファイルのサイズよりも大きくなります。これは、バックアップファイルが外部storageにアップロードされる前に圧縮されるためです。
initial-scan-pending-memory-quota
v6.2.0 の新機能
- ログ バックアップ中に増分スキャン データを保存するために使用されるキャッシュのクォータ。
- デフォルト値:
min(Total machine memory * 10%, 512 MiB)
initial-scan-rate-limit
v6.2.0 の新機能
- ログバックアップ中の増分データスキャンにおけるスループットのレート制限。これは、ディスクから1秒あたりに読み取ることができるデータの最大量を意味します。数値のみ(例:
60
)を指定した場合、単位はKiBではなくByteになります。 - デフォルト値: 60MiB
- 最小値: 1MiB
max-flush-interval
v6.2.0 の新機能
- ログバックアップでバックアップデータを外部storageに書き込む最大間隔。
- デフォルト値: 3分
num-threads
v6.2.0 の新機能
- ログ バックアップで使用されるスレッドの数。
- デフォルト値: CPU * 0.5
- 値の範囲: [2, 12]
temp-path
バージョン6.2.0の新機能
- ログ ファイルが外部storageにフラッシュされる前に書き込まれる一時パス。
- デフォルト値:
${deploy-dir}/data/log-backup-temp
CDC
TiCDC に関連するコンフィグレーション項目。
min-ts-interval
- 解決された TS が計算され転送される間隔。
- デフォルト値:
"1s"
。
注記:
バージョン6.5.0では、CDCレイテンシーを削減するため、デフォルト値の
min-ts-interval
が"1s"
から"200ms"
に変更されました。バージョン6.5.1以降では、ネットワークトラフィックを削減するため、このデフォルト値は"1s"
に戻されます。
old-value-cache-memory-quota
- TiCDC によるメモリ使用量の上限の古い値。
- デフォルト値:
512MiB
sink-memory-quota
- TiCDC データ変更イベントによるメモリ使用量の上限。
- デフォルト値:
512MiB
incremental-scan-speed-limit
- 履歴データが増分スキャンされる最大速度。
- デフォルト値:
"128MiB"
、これは 1 秒あたり 128 MiB を意味します。
incremental-scan-threads
- 履歴データを増分スキャンするタスクのスレッド数。
- デフォルト値:
4
、つまり 4 つのスレッドを意味します。
incremental-scan-concurrency
- 履歴データを増分スキャンするタスクの同時実行の最大数。
- デフォルト値:
6
。最大 6 つのタスクを同時に実行できることを意味します。 - 注意:
incremental-scan-concurrency
の値はincremental-scan-threads
の値以上である必要があります。そうでない場合、TiKV は起動時にエラーを報告します。
incremental-scan-concurrency-limit
v7.6.0 の新機能
- 実行待ちの履歴データの増分スキャンタスクの最大キュー長。実行待ちのタスク数がこの制限を超えると、新しいタスクは拒否されます。
- デフォルト値:
10000
。これは、最大 10000 個のタスクを実行キューに入れることができることを意味します。 - 注意:
incremental-scan-concurrency-limit
incremental-scan-concurrency
である必要があります。そうでない場合、TiKV はincremental-scan-concurrency
使用してこの構成を上書きします。
resolved-ts
ステイル読み取り要求に対応するために解決済みの TS を維持することに関連するコンフィグレーション項目。
enable
- すべてのリージョンの解決済み TS を維持するかどうかを決定します。
- デフォルト値:
true
advance-ts-interval
- 解決された TS が計算され転送される間隔。
- デフォルト値:
"20s"
scan-lock-pool-size
- 解決済み TS を初期化するときに TiKV が MVCC (マルチバージョン同時実行制御) ロック データをスキャンするために使用するスレッドの数。
- デフォルト値:
2
、つまり 2 つのスレッドを意味します。
pessimistic-txn
悲観的トランザクションの使用については、 TiDB 悲観的トランザクションモードを参照してください。
wait-for-lock-timeout
- TiKVにおける悲観的トランザクションが、他のトランザクションによるロックの解放を待機する最長時間。タイムアウトが発生した場合、TiDBにエラーが返され、TiDBはロックの追加を再試行します。ロック待機タイムアウトは
innodb_lock_wait_timeout
に設定されます。 - デフォルト値:
"1s"
- 最小値:
"1ms"
wake-up-delay-duration
- 悲観的トランザクションがロックを解除すると、ロックを待機しているすべてのトランザクションのうち、最小の
start_ts
持つトランザクションのみが起動されます。他のトランザクションはwake-up-delay-duration
後に起動されます。 - デフォルト値:
"20ms"
pipelined
- この設定項目は、悲観的ロックの追加をパイプライン処理で実行できるようにします。この機能を有効にすると、TiKVはデータがロック可能であることを検出すると、直ちにTiDBに後続のリクエストの実行と悲観的ロックの非同期書き込みを通知します。これにより、レイテンシーが大幅に削減され、悲観的トランザクションのパフォーマンスが大幅に向上します。ただし、悲観的ロックの非同期書き込みが失敗する可能性は依然として低く、悲観的トランザクションのコミットが失敗する可能性があります。
- デフォルト値:
true
in-memory
v6.0.0 の新機能
- インメモリ悲観的ロック機能を有効にします。この機能を有効にすると、悲観的トランザクションは、ロックをディスクに書き込んだり、他のレプリカに複製したりするのではなく、メモリ内にロックを保存しようとします。これにより、悲観的トランザクションのパフォーマンスが向上します。ただし、悲観的ロックが失われ、悲観的トランザクションのコミットが失敗する可能性は依然として低くなります。
- デフォルト値:
true
in-memory
pipelined
の値がtrue
場合にのみ有効になることに注意してください。
クォータ
クォータリミッターに関連するコンフィグレーション項目。
max-delay-duration
v6.0.0 の新機能
- 単一の読み取りまたは書き込み要求がフォアグラウンドで処理されるまでに強制的に待機する最大時間。
- デフォルト値:
500ms
- 推奨設定:ほとんどの場合、デフォルト値を使用することをお勧めします。インスタンスでメモリ不足(OOM)やパフォーマンスの急激な変動が発生する場合は、値を1秒に設定することで、リクエストの待機時間を1秒未満に短縮できます。
フォアグラウンドクォータリミッター
フォアグラウンド クォータ リミッターに関連するコンフィグレーション項目。
TiKV がデプロイされているマシンのリソースが限られている場合(たとえば、CPU が 4v でメモリが 16 G しかない場合)を考えてみましょう。このような状況では、TiKV のフォアグラウンドで処理される読み取りおよび書き込み要求が多すぎる可能性があり、バックグラウンドで使用される CPU リソースがそのような要求の処理に占有され、TiKV のパフォーマンスの安定性に影響を及ぼします。この状況を回避するには、フォアグラウンド クォータ関連の設定項目を使用して、フォアグラウンドで使用される CPU リソースを制限できます。要求によって Quota Limiter がトリガーされると、その要求は TiKV が CPU リソースを解放するまでしばらく待機する必要があります。正確な待機時間は要求の数によって決まり、最大待機時間はmax-delay-duration
の値以下になります。
foreground-cpu-time
v6.0.0 の新機能
- 読み取りおよび書き込み要求を処理するために TiKV フォアグラウンドで使用される CPU リソースのソフト制限。
- デフォルト値:
0
(制限なしを意味します) - 単位: millicpu (たとえば、
1500
フォアグラウンド要求が 1.5v CPU を消費することを意味します) - 推奨設定:4コア以上のインスタンスの場合は、デフォルト値の
0
使用します。4コアのインスタンスの場合は、1000
~1500
範囲で設定するとバランスが取れます。2コアのインスタンスの場合は、1200
未満の値にしてください。
foreground-write-bandwidth
v6.0.0 の新機能
- トランザクションがデータを書き込む帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します) - 推奨設定:ほとんどの場合、デフォルト値の
0
使用します。ただし、foreground-cpu-time
設定では書き込み帯域幅を制限するのに十分でない場合は、例外的に、コア数が4以下のインスタンスでは50MiB
未満の値を設定することをお勧めします。
foreground-read-bandwidth
v6.0.0 の新機能
- トランザクションとコプロセッサーがデータを読み取る帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します) - 推奨設定:ほとんどの場合、デフォルト値の
0
使用します。ただし、foreground-cpu-time
設定では読み取り帯域幅を制限するのに十分でない場合は、例外的に、コア数が4以下のインスタンスでは20MiB
未満の値を設定することをお勧めします。
バックグラウンドクォータリミッター
バックグラウンド クォータ リミッターに関連するコンフィグレーション項目。
TiKV がデプロイされているマシンのリソースが限られている場合、たとえば、4v CPU と 16 Gメモリしかないとします。このような状況では、TiKV のバックグラウンドで過剰な計算や読み取り/書き込み要求が処理され、フォアグラウンドで使用される CPU リソースがそのような要求の処理に占有され、TiKV のパフォーマンスの安定性に影響する可能性があります。この状況を回避するには、バックグラウンド クォータ関連の設定項目を使用して、バックグラウンドで使用される CPU リソースを制限できます。要求が Quota Limiter をトリガーすると、その要求は TiKV が CPU リソースを解放するまでしばらく待機する必要があります。正確な待機時間は要求の数によって異なり、最大待機時間はmax-delay-duration
の値以下になります。
background-cpu-time
v6.2.0 の新機能
- 読み取りおよび書き込み要求を処理するために TiKV バックグラウンドで使用される CPU リソースのソフト制限。
- デフォルト値:
0
(制限なしを意味します) - 単位: millicpu (たとえば、
1500
バックグラウンド リクエストが 1.5v CPU を消費することを意味します)
background-write-bandwidth
v6.2.0 の新機能
注記:
この設定項目は
SHOW CONFIG
結果として返されますが、現在設定しても効果はありません。
- バックグラウンド トランザクションがデータを書き込む帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します)
background-read-bandwidth
v6.2.0 の新機能
注記:
この設定項目は
SHOW CONFIG
結果として返されますが、現在設定しても効果はありません。
- バックグラウンド トランザクションとコプロセッサーがデータを読み取る帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します)
enable-auto-tune
v6.2.0 の新機能
- クォータの自動調整を有効にするかどうかを決定します。この設定項目を有効にすると、TiKVはTiKVインスタンスの負荷に基づいて、バックグラウンドリクエストのクォータを動的に調整します。
- デフォルト値:
false
(自動調整が無効であることを意味します)
causal-ts v6.1.0 の新機能
TiKV API V2が有効な場合にタイムスタンプの取得に関連するコンフィグレーション項目( storage.api-version = 2
)。
書き込みレイテンシーを削減するため、TiKVは定期的にタイムスタンプのバッチを取得し、ローカルにキャッシュします。キャッシュされたタイムスタンプは、PDへの頻繁なアクセスを回避し、TSOサービスの短期的な障害を許容するのに役立ちます。
alloc-ahead-buffer
v6.4.0 の新機能
- 事前に割り当てられた TSO キャッシュ サイズ (期間内)。
- TiKV がこの設定項目で指定された期間に基づいて TSO キャッシュを事前割り当てすることを示します。TiKV は前回の期間に基づいて TSO の使用量を推定し、
alloc-ahead-buffer
満たす TSO をローカルに要求してキャッシュします。 - この設定項目は、TiKV API V2が有効になっている場合にPD障害に対する許容度を高めるためによく使用されます(
storage.api-version = 2
)。 - この設定項目の値を大きくすると、TSO消費量とTiKVのメモリオーバーヘッドが増加する可能性があります。十分なTSOを確保するには、PDの
tso-update-physical-interval
設定項目を減らすことをお勧めします。 - テストによると、デフォルト値が
alloc-ahead-buffer
場合、PD リーダーが失敗して別のノードに切り替わると、書き込み要求のレイテンシーが短期的に増加し、QPS が減少 (約 15%) します。 - 業務への影響を回避するには、PD で
tso-update-physical-interval = "1ms"
設定し、TiKV で次の設定項目を設定します。causal-ts.alloc-ahead-buffer = "6s"
causal-ts.renew-batch-max-size = 65536
causal-ts.renew-batch-min-size = 2048
- デフォルト値:
3s
renew-interval
- ローカルにキャッシュされたタイムスタンプが更新される間隔。
renew-interval
間隔で、TiKV はタイムスタンプの一括更新を開始し、前期間のタイムスタンプ消費量とalloc-ahead-buffer
の設定に応じて、キャッシュされたタイムスタンプの数を調整します。このパラメータを大きすぎる値に設定すると、最新の TiKV ワークロードの変更が時間内に反映されません。このパラメータを小さすぎる値に設定すると、PD の負荷が増加します。書き込みトラフィックの変動が激しい場合、タイムスタンプが頻繁に枯渇する場合、および書き込みレイテンシーが増加する場合は、このパラメータを小さい値に設定できます。同時に、PD の負荷も考慮する必要があります。- デフォルト値:
"100ms"
renew-batch-min-size
- タイムスタンプ要求内の TSO の最小数。
- TiKVは、前期間のタイムスタンプ消費量に応じて、キャッシュされるタイムスタンプの数を調整します。必要なTSOが少数の場合、TiKVは要求されるTSOの数を
renew-batch-min-size
達するまで減らします。アプリケーションで大規模なバースト書き込みトラフィックが頻繁に発生する場合は、必要に応じてこのパラメータを大きく設定できます。このパラメータは、単一のtikvサーバーのキャッシュサイズであることに注意してください。パラメータを大きすぎる値に設定し、クラスターに多数のtikvサーバーが含まれている場合、TSOの消費が急激に増加します。 - GrafanaのTiKV-RAW > Causal timestampパネルでは、 TSOバッチサイズは、アプリケーションのワークロードに応じて動的に調整された、ローカルにキャッシュされたタイムスタンプの数です。このメトリックを参照して
renew-batch-min-size
調整できます。 - デフォルト値:
100
renew-batch-max-size
v6.4.0 の新機能
- タイムスタンプ要求内の TSO の最大数。
- デフォルトのTSO物理時間更新間隔(
50ms
)では、PDは最大262144個のTSOを提供します。要求されたTSOがこの数を超えると、PDはそれ以上のTSOを提供しなくなります。この設定項目は、TSOの枯渇と、TSO枯渇が他の業務に及ぼす悪影響を回避するために使用されます。高可用性を向上させるためにこの設定項目の値を増やす場合は、十分なTSOを確保するために、同時にtso-update-physical-interval
の値を減らす必要があります。 - デフォルト値:
8192
リソース管理
TiKVstorageレイヤーのリソース制御に関するコンフィグレーション項目。
enabled
v6.6.0 の新機能
- 対応するリソースグループのいずれかリクエストユニット(RU)に基づいて、ユーザーのフォアグラウンド読み取り/書き込み要求のスケジュールを有効にするかどうかを制御します。TiDBリソースグループとリソース制御の詳細については、 TiDB リソース制御参照してください。
- この設定項目を有効にすると、TiDB で`tidb_enable_resource_control有効になっている場合にのみ機能します。この設定項目を有効にすると、TiKV は優先度キューを使用して、フォアグラウンドユーザーからのキューに入れられた読み取り/書き込み要求をスケジュールします。要求のスケジュール優先度は、その要求を受信するリソースグループが既に消費しているリソース量に反比例し、対応するリソースグループのクォータに正比例します。
- デフォルト値:
true
。リソース グループの RU に基づくスケジュールが有効であることを意味します。
スプリット
ロードベーススプリットに関連するコンフィグレーション項目です。
byte-threshold
v5.0 の新機能
リージョンがホットスポットとして識別されるトラフィックしきい値を制御します。
デフォルト値:
region-split-size
4 GiB 未満の場合、1 秒あたり30MiB
。region-split-size
4 GiB 以上の場合は 1 秒あたり100MiB
です。
qps-threshold
リージョンがホットスポットとして識別される QPS しきい値を制御します。
デフォルト値:
region-split-size
4 GiB 未満の場合は3000
。region-split-size
4 GiB 以上の場合は7000
。
region-cpu-overload-threshold-ratio
v6.2.0の新機能
リージョンがホットスポットとして識別される CPU 使用率のしきい値を制御します。
デフォルト値:
region-split-size
4 GiB 未満の場合は0.25
。region-split-size
4 GiB 以上の場合は0.75
。
メモリv7.5.0 の新機能
enable-heap-profiling
v7.5.0 の新機能
- TiKV のメモリ使用量を追跡するためにヒープ プロファイリングを有効にするかどうかを制御します。
- デフォルト値:
true
profiling-sample-per-bytes
v7.5.0 の新機能
- ヒープ プロファイリングによって毎回サンプリングされるデータの量を、最も近い 2 の累乗に切り上げて指定します。
- デフォルト値:
512KiB
enable-thread-exclusive-arena
v8.1.0 の新機能
- 各 TiKV スレッドのメモリ使用量を追跡するために、TiKV スレッド レベルでメモリ割り当てステータスを表示するかどうかを制御します。
- デフォルト値:
true