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
参照してください。1 台の物理マシンに複数の 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 の新機能
ログに関連するコンフィグレーション項目。
v5.4.0 から、TiKV と TiDB のログ設定項目の整合性を保つため、TiKV は以前の設定項目
log-rotation-timespan
廃止し、log-level
、log-format
、log-file
、log-rotation-size
を次の設定項目に変更しました。古い設定項目のみを設定し、その値をデフォルト以外の値に設定した場合、古い項目は新しい項目と互換性が保たれます。古い設定項目と新しい設定項目の両方が設定されている場合は、新しい項目が有効になります。
level
v5.4.0 の新機能
- ログレベル
"error"
"fatal"
"warn"
"debug"
"info"
- デフォルト値:
"info"
format
v5.4.0 の新機能
- ログ形式
- オプション値:
"json"
、"text"
- デフォルト値:
"text"
enable-timestamp
v5.4.0 の新機能
- ログ内のタイムスタンプを有効にするか無効にするかを決定します
- オプション値:
true
、false
- デフォルト値:
true
log.file v5.4.0 の新機能
- ログ ファイルに関連するコンフィグレーション項目。
filename
v5.4.0 の新機能
- ログファイル。この設定項目が設定されていない場合、ログはデフォルトで「stderr」に出力されます。この設定項目が設定されている場合、ログは対応するファイルに出力されます。
- デフォルト値:
""
max-size
v5.4.0 の新機能
- 1 つのログ ファイルの最大サイズ。ファイル サイズがこの設定項目で設定された値より大きい場合、システムは自動的に 1 つのファイルを複数のファイルに分割します。
- デフォルト値:
300
- 最大値:
4096
- 単位: MiB
max-days
v5.4.0 の新機能
- TiKV がログ ファイルを保持する最大日数。
- 構成項目が設定されていない場合、またはその値がデフォルト値
0
に設定されている場合、TiKV はログ ファイルを消去しません。 - パラメータが
0
以外の値に設定されている場合、TiKV はmax-days
後に期限切れのログ ファイルをクリーンアップします。
- 構成項目が設定されていない場合、またはその値がデフォルト値
- デフォルト値:
0
max-backups
v5.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 メッセージの圧縮アルゴリズム。これは、TiKV ノード間の gRPC メッセージと、TiKV から TiDB に送信される 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"
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メッセージのキューのサイズを指定します。時間内に送信されないメッセージが多すぎてバッファーがいっぱいになったり、メッセージが破棄されたりする場合は、システムの安定性を向上させるために、より大きな値を指定できます。
- デフォルト値:
16384
simplify-metrics
v6.2.0 の新機能
- 返される監視メトリックを簡素化するかどうかを指定します。値を
true
に設定すると、TiKV は一部のメトリックを除外することで、各リクエストに対して返されるデータの量を削減します。 - デフォルト値:
false
forward-max-connections-per-address
バージョン 5.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
コマンドの結果に出力される K バイト数。
max-tasks-per-worker
- 統合読み取りプール内の単一スレッドに許可されるタスクの最大数。値を超えると
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
です。98
cpu num
場合、デフォルト値は4
です。1516
cpu num
場合、デフォルト値は8
です。- 最小値:
1
normal-concurrency
- 通常優先度
read
リクエストを処理する同時スレッドの許容数 8
≤cpu num
≤16
の場合、デフォルト値はcpu_num * 0.5
です。98
cpu num
場合、デフォルト値は4
です。1516
cpu num
場合、デフォルト値は8
です。- 最小値:
1
low-concurrency
- 低優先度
read
リクエストを処理する同時スレッドの許容数 8
≤cpu num
≤16
の場合、デフォルト値はcpu_num * 0.5
です。98
cpu num
場合、デフォルト値は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
コマンドの結果に出力される K バイト数。
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
コマンドの結果に出力される K バイト数。
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
- 10 ... 「Time to live」の略です。この項目を有効にすると、TiKV は 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になります。
- デフォルト値: 1h
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) がサポートされています生のKV CDCを参照してください。
- デフォルト値:
1
- API V1 と API V2 はstorage形式が異なります。TiKV に TiDB データのみが含まれている場合にのみ、API V2 を直接有効または無効にすることができます。その他のシナリオでは、新しいクラスターをデプロイし、 RawKV バックアップと復元使用してデータを移行する必要があります。
- API V2 を有効にした後は、TiKV クラスターを v6.1.0 より前のバージョンにダウングレードすることはできません。ダウングレードすると、データが破損する可能性があります。
storage.block-cache
複数の RocksDBカラムファミリ (CF) 間でのブロックキャッシュの共有に関連するコンフィグレーション項目。
capacity
共有ブロックキャッシュのサイズ。
デフォルト値:
storage.engine="raft-kv"
の場合、デフォルト値はシステムメモリの合計サイズの 45% になります。storage.engine="partitioned-raft-kv"
の場合、デフォルト値はシステムメモリの合計サイズの 30% になります。
単位: KiB|MiB|GiB
storage.flow-control
TiKV のフロー制御メカニズムに関連するコンフィグレーション項目。このメカニズムは、RocksDB の書き込み停止メカニズムを置き換え、スケジューラレイヤーでフローを制御し、スタックしたRaftstoreまたは Apply スレッドによって引き起こされる二次災害を回避します。
enable
- フロー制御メカニズムを有効にするかどうかを決定します。有効にすると、TiKV は KvDB の書き込みストール メカニズムと RaftDB (memtable を除く) の書き込みストール メカニズムを自動的に無効にします。
- デフォルト値:
true
memtables-threshold
- kvDB memtables の数がこのしきい値に達すると、フロー制御メカニズムが動作を開始します。
enable
true
に設定すると、この構成項目はrocksdb.(defaultcf|writecf|lockcf).max-write-buffer-number
オーバーライドします。 - デフォルト値:
5
l0-files-threshold
- kvDB L0 ファイルの数がこのしきい値に達すると、フロー制御メカニズムが動作を開始します。
enable
true
に設定すると、この構成項目はrocksdb.(defaultcf|writecf|lockcf).level0-slowdown-writes-trigger
オーバーライドします。 - デフォルト値:
20
soft-pending-compaction-bytes-limit
- KvDB 内の保留中の圧縮バイトがこのしきい値に達すると、フロー制御メカニズムは一部の書き込み要求を拒否し始め、
ServerIsBusy
エラーを報告します。enable
true
に設定されている場合、この構成項目はrocksdb.(defaultcf|writecf|lockcf).soft-pending-compaction-bytes-limit
オーバーライドします。 - デフォルト値:
"192GiB"
hard-pending-compaction-bytes-limit
- KvDB 内の保留中の圧縮バイトがこのしきい値に達すると、フロー制御メカニズムはすべての書き込み要求を拒否し、
ServerIsBusy
エラーを報告します。enable
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容量。データを保存できる最大サイズです
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
- 1つのログの最大サイズに対するハード制限
- デフォルト値:
"8MiB"
- 最小値:
0
- 単位: MiB|GiB
raft-log-compact-sync-interval
v5.3 の新機能
- 不要なRaftログを圧縮する時間間隔
- デフォルト値:
"2s"
- 最小値:
"0s"
raft-log-gc-tick-interval
- Raftログを削除するポーリング タスクがスケジュールされる時間間隔
0
は、この機能が無効であることを意味します。 - デフォルト値:
"3s"
- 最小値:
"0s"
raft-log-gc-threshold
- 残存Raftの最大許容数に関するソフト制限
- デフォルト値:
50
- 最小値:
1
raft-log-gc-count-limit
- 許容される残存Raft数のハード制限
- デフォルト値: 3/4リージョンサイズに収容できるログ数 (ログごとに 1MiB として計算)
- 最小値:
0
raft-log-gc-size-limit
- 残余Raftの許容サイズに関するハード制限
- デフォルト値:リージョンサイズの 3/4
- 最小値:
0
より大きい
raft-log-reserve-max-ticks
v5.3 の新機能
- この設定項目で設定されたティック数が経過した後、残りのRaftログの数が
raft-log-gc-threshold
で設定された値に達していなくても、TiKV はこれらのログに対してガベージコレクション(GC) を実行します。 - デフォルト値:
6
- 最小値:
0
より大きい
raft-engine-purge-interval
- ディスク領域をできるだけ早くリサイクルするために、古い TiKV ログ ファイルを消去する間隔。Raft エンジンは交換可能なコンポーネントであるため、一部の実装では消去プロセスが必要になります。
- デフォルト値:
"10s"
raft-entry-cache-life-time
- メモリ内のログキャッシュに許容される最大残り時間
- デフォルト値:
"30s"
- 最小値:
0
max-apply-unpersisted-log-limit
v8.1.0 の新機能
適用できる、コミットされているが永続化されていないRaftログの最大数。
- この構成項目を
0
より大きい値に設定すると、TiKV ノードはコミットされているが永続化されていないRaftログを事前に適用できるようになり、そのノードの IO ジッターによって発生するロングテールレイテンシーが効果的に削減されます。ただし、TiKV のメモリ使用量とRaftログによって占有されるディスク領域も増加する可能性があります。 - この構成項目を
0
に設定すると、この機能が無効になります。つまり、TiKV はRaftログがコミットされて永続化されるまで待機してから、ログを適用する必要があります。この動作は、v8.2.0 より前の動作と一致しています。
- この構成項目を
デフォルト値:
1024
最小値:
0
hibernate-regions
- Hibernate リージョン を有効または無効にします。このオプションを有効にすると、長時間アイドル状態になっているリージョン は自動的に休止状態に設定されます。これにより、アイドル状態の Region のRaftリーダーとフォロワー間のハートビートメッセージによって発生する余分なオーバーヘッドが削減されます。1
peer-stale-state-check-interval
使用すると、休止状態の Region のリーダーとフォロワー間のハートビートビート間隔を変更できます。 - デフォルト値: 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 へのリージョンのハートビートがトリガーされる時間間隔
0
この機能が無効であることを意味します。 - デフォルト値:
"1m"
- 最小値:
0
pd-store-heartbeat-tick-interval
- ストアの PD へのハートビートがトリガーされる時間間隔
0
この機能が無効であることを意味します。 - デフォルト値:
"10s"
- 最小値:
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
- 一貫性チェックがトリガーされる時間間隔
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 ファイルをチェックする時間間隔
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
- データをディスクにフラッシュするプール内の許容スレッド数。これは、適用スレッド プールのサイズです。このスレッド プールのサイズを変更する場合は、 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データがディスクに書き込まれるしきい値を決定します。データ サイズがこの設定項目の値より大きい場合、データはディスクに書き込まれます
store-io-pool-size
の値が0
の場合、この設定項目は有効になりません。 - デフォルト値:
1MiB
- 最小値:
0
report-min-resolved-ts-interval
v6.0.0 の新機能
- 最小解決タイムスタンプが PD リーダーに報告される間隔を決定します。この値が
0
に設定されている場合、レポートは無効になります。 - デフォルト値: v6.3.0 より前では、デフォルト値は
"0s"
です。v6.3.0 以降では、デフォルト値は"1s"
で、これは最小の正の値です。 - 最小値:
0
- 単位: 秒
evict-cache-on-memory-ratio
v7.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 時と午後 11 時に完全圧縮を実行することを示します。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
v7.6.0 の新機能
- TiKV 定期完全圧縮の最大 CPU 使用率を制限します。
- デフォルト値:
0.1
。これは、定期的な圧縮プロセスの最大 CPU 使用率が 10% であることを意味します。
コプロセッサ
コプロセッサーに関連するコンフィグレーション項目。
split-region-on-table
- テーブルごとにリージョンを分割するかどうかを決定します。この機能は TiDB モードでのみ使用することをお勧めします。
- デフォルト値:
false
batch-split-limit
- バッチでのリージョン分割のしきい値。この値を大きくすると、リージョン分割が高速化されます。
- デフォルト値:
10
- 最小値:
1
region-max-size
- リージョンの最大サイズ。この値を超えると、リージョンは複数のリージョンに分割されます。
- デフォルト値:
region-split-size / 2 * 3
- 単位: KiB|MiB|GiB
region-split-size
- 新しく分割されたリージョンのサイズ。この値は推定値です。
- デフォルト値:
"256MiB"
。v8.4.0 より前では、デフォルト値は"96MiB"
です。 - 単位: KiB|MiB|GiB
region-max-keys
- リージョン内で許容されるキーの最大数。この値を超えると、リージョンは複数のリージョンに分割されます。
- デフォルト値:
region-split-keys / 2 * 3
region-split-keys
- 新しく分割されたリージョン内のキーの数。この値は推定値です。
- デフォルト値:
2560000
。v8.4.0 より前では、デフォルト値は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
: MANIFEST ファイルに WAL ファイルに関する情報を記録し、起動時に WAL ファイルの整合性を検証します。false
: MANIFEST ファイルに WAL ファイルに関する情報を記録せず、起動時に WAL ファイルの整合性を検証しません。
ロックスdb.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 スレッド プールのサイズを増やすことを検討してください。
- デフォルト値:
4
- 最小値:
1
rocksdb.defaultcf | rocksdb.writecf | rocksdb.lockcf
rocksdb.defaultcf
rocksdb.lockcf
rocksdb.writecf
するコンフィグレーション項目。
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
レイヤーで指定された最後の圧縮アルゴリズムを最下層に直接採用しませんbottommost-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 の最大数
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」の場合、max-bytes-for-level-base
の値はwrite-buffer-size * 4
にする必要があります。これは、L0 と L1 の圧縮がなく、L0 の圧縮のトリガー条件は SST ファイルの数が 4 (デフォルト値) に達することであるためです。L0 と L1 の両方で圧縮が採用されている場合、memtable から圧縮された SST ファイルのサイズを理解するには、RocksDB ログを分析する必要があります。たとえば、ファイル サイズが 32 MiB の場合、max-bytes-for-level-base
の値を 128 MiB (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
- 保留中の圧縮バイトのソフト制限
storage.flow-control.enable
true
に設定すると、storage.flow-control.soft-pending-compaction-bytes-limit
この構成項目を上書きします。 - デフォルト値:
"192GiB"
- 単位: KiB|MiB|GiB
hard-pending-compaction-bytes-limit
- 保留中の圧縮バイトのハード制限
storage.flow-control.enable
true
に設定すると、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
v7.2.0 の新機能
- TTL よりも古い更新を含む SST ファイルは、自動的に圧縮対象として選択されます。これらの SST ファイルは、カスケード方式で圧縮され、最下位レベルまたはファイルに圧縮されます。
- デフォルト値:
"0s"
。これは、デフォルトでは SST ファイルが選択されていないことを意味します。 - 単位: s(秒)|h(時間)|d(日)
periodic-compaction-seconds
v7.2.0 の新機能
- 定期的な圧縮の時間間隔。この値より古い更新を含む SST ファイルは圧縮対象として選択され、これらの SST ファイルが元々存在していたレベルと同じレベルに書き換えられます。
- デフォルト値:
"0s"
。これは、定期的な圧縮がデフォルトで無効になっていることを意味します。 - 単位: s(秒)|h(時間)|d(日)
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ファイルで使用される圧縮アルゴリズム
"lz4"
"lz4hc"
"bzip2"
"no"
"snappy"
"zlib"
"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
。v8.0.0 以降、TiKV はshared-blob-cache
構成項目を導入し、デフォルトで有効になっているため、blob-cache-size
別途設定する必要はありません。blob-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 を 1 回実行できる 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 から以前のバージョンにダウングレードする必要がある場合は、ダウングレードする前に、
enable
をfalse
に設定してRaft Engineを無効にし、TiKV を再起動して構成を有効にします。
enable
- Raftログを保存するためにRaft Engineを使用するかどうかを決定します。有効にすると、
raftdb
の設定は無視されます。 - デフォルト値:
true
dir
- raft ログ ファイルが保存されるディレクトリ。ディレクトリが存在しない場合は、TiKV の起動時に作成されます。
- この設定項目が設定されていない場合は
{data-dir}/raft-engine
が使用されます。 - マシンに複数のディスクがある場合は、TiKV のパフォーマンスを向上させるために、 Raft Engineのデータを別のディスクに保存することをお勧めします。
- デフォルト値:
""
spill-dir
v8.4.0 の新機能
- Raftログ ファイルを保存するための補助ディレクトリ。1 ディレクトリのディスクがいっぱいになると、新しいRaft
dir
がこのディレクトリに保存されます。設定後にこの補助ディレクトリが存在しない場合は、TiKV の起動時に自動的に作成されます。 - この構成が設定されていない場合、補助ディレクトリは有効になりません。
注記:
- この構成は、 Raft Engineの
dir
とspill-dir
異なるディスク ドライブに設定されている場合にのみ有効になります。- この機能を有効にした後、無効にしたい場合は、TiKV を再起動する前に次の操作を実行する必要があります。そうしないと、TiKV は起動に失敗します。
- TiKVを止めてください。
- すべてのRaftログを
spill-dir
ディレクトリからdir
ディレクトリにコピーします。- TiKV 構成ファイルからこの構成を削除します。
- TiKVを再起動します。
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
: v6.3.0 より前の TiKV のデフォルトのログ ファイル バージョン。TiKV >= v6.1.0 で読み取ることができます。2
: ログのリサイクルをサポートします。TiKV >= v6.3.0 で読み取ることができます。
- デフォルト値:
storage.engine="raft-kv"
場合、デフォルト値は2
です。storage.engine="partitioned-raft-kv"
場合、デフォルト値は5
です。
enable-log-recycle
v6.3.0 の新機能
注記:
この構成項目は、
format-version
>= 2 の場合にのみ使用できます。
- Raft Engineで古いログ ファイルをリサイクルするかどうかを決定します。有効にすると、論理的に消去されたログ ファイルはリサイクル用に予約されます。これにより、書き込みワークロードのロングテールレイテンシーが削減されます。
- デフォルト値:
true
prefill-for-recycle
v7.0.0 の新機能
注記:
この設定項目は、
enable-log-recycle
true
に設定されている場合にのみ有効になります。
- Raft Engineでログのリサイクル用に空のログ ファイルを生成するかどうかを決定します。有効にすると、 Raft Engineは初期化中にログのリサイクル用に空のログ ファイルのバッチを自動的に入力し、初期化後すぐにログのリサイクルが有効になります。
- デフォルト値:
false
安全
セキュリティに関するコンフィグレーション項目。
ca-path
- CAファイルのパス
- デフォルト値:
""
cert-path
- X.509証明書を含むPrivacy Enhanced Mail (PEM)ファイルのパス
- デフォルト値:
""
key-path
- X.509キーを含むPEMファイルのパス
- デフォルト値:
""
cert-allowed-cn
- クライアントによって提示された証明書内の許容可能な X.509 共通名のリスト。提示された共通名がリスト内のエントリの 1 つと完全に一致する場合にのみ、要求が許可されます。
- デフォルト値:
[]
。これは、クライアント証明書の CN チェックがデフォルトで無効になっていることを意味します。
redact-info-log
v4.0.8 の新機能
- この構成項目は、ログ編集を有効または無効にします。値のオプション:
true
、false
、"on"
、"off"
、および"marker"
。"on"
、"off"
、および"marker"
オプションは、v8.3.0 で導入されました。 - 構成項目が
false
または"off"
に設定されている場合、ログ編集は無効になります。 - 構成項目が
true
または"on"
に設定されている場合、ログ内のすべてのユーザー データは?
に置き換えられます。 - 設定項目が
"marker"
に設定されている場合、ログ内のすべてのユーザー データは‹ ›
でラップされます。ユーザー データに‹
または›
含まれている場合、‹
‹‹
としてエスケープされ、›
››
としてエスケープされます。マークされたログに基づいて、ログを表示するときにマークされた情報を非感度化するかどうかを決定できます。 - デフォルト値:
false
- 詳しい使い方についてはTiKV側でのログ編集ご覧ください。
セキュリティ.暗号化
保存時の暗号化 (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
より大きい場合、ファイル[b,c)
[a,b)
[d,e)
[c,d)
[c,d)
[a,b)
サイズと同じ (またはsst-max-size
に大きい[b,c)
になります。 - デフォルト値:
"384MiB"
。v8.4.0 より前では、デフォルト値は"144MiB"
です。
enable-auto-tune
v5.4.0 の新機能
- クラスター リソースの使用率が高い場合に、クラスターへの影響を軽減するために、バックアップ タスクで使用されるリソースを制限するかどうかを制御します。詳細については、 BRオートチューンを参照してください。
- デフォルト値:
true
s3-multi-part-size
v5.3.2 の新機能
注記:
この設定は、S3 レート制限によって発生するバックアップ障害に対処するために導入されました。この問題はバックアップデータのstorage構造の改善で修正されました。したがって、この設定は v6.1.1 から非推奨となり、推奨されなくなりました。
- バックアップ中に S3 へのマルチパートアップロードを実行するときに使用するパートサイズ。この設定の値を調整して、S3 に送信されるリクエストの数を制御できます。
- S3 にデータをバックアップし、バックアップ ファイルがこの設定項目の値より大きい場合は、 マルチパートアップロード自動的に有効になります。圧縮率に基づくと、96 MiB のリージョンで生成されるバックアップ ファイルは約 10 MiB ~ 30 MiB になります。
- デフォルト値: 5MiB
backup.hadoop
home
- HDFS シェル コマンドの場所を指定し、TiKV がシェル コマンドを見つけられるようにします。この構成項目は、環境変数
$HADOOP_HOME
と同じ効果があります。 - デフォルト値:
""
linux-user
- TiKV が HDFS シェル コマンドを実行する Linux ユーザーを指定します。
- この設定項目が設定されていない場合、TiKV は現在の Linux ユーザーを使用します。
- デフォルト値:
""
ログバックアップ
ログバックアップに関連するコンフィグレーション項目。
enable
v6.2.0 の新機能
- ログ バックアップを有効にするかどうかを決定します。
- デフォルト値:
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 ではなくバイトになることに注意してください。 - デフォルト値: 60MiB
- 最小値: 1MiB
max-flush-interval
v6.2.0 の新機能
- ログバックアップでバックアップデータを外部storageに書き込む最大間隔。
- デフォルト値: 3分
num-threads
v6.2.0 の新機能
- ログ バックアップで使用されるスレッドの数。
- デフォルト値: CPU * 0.5
- 値の範囲: [2, 12]
temp-path
v6.2.0 の新機能
- ログ ファイルが外部storageにフラッシュされる前に書き込まれる一時パス。
- デフォルト値:
${deploy-dir}/data/log-backup-temp
CDC
TiCDC に関連するコンフィグレーション項目。
min-ts-interval
- 解決された TS が計算され転送される間隔。
- デフォルト値:
"1s"
。
注記:
v6.5.0 では、CDCレイテンシーを削減するために、デフォルト値
min-ts-interval
が"1s"
から"200ms"
に変更されました。v6.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 は起動時にエラーを報告します。
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
場合にのみ有効になることに注意してください。
in-memory-peer-size-limit
v8.4.0 の新機能
- リージョン内のメモリ内悲観的ロックのメモリ使用量制限を制御します。この制限を超えると、TiKV は悲観的ロックを永続的に書き込みます。
- デフォルト値:
512KiB
- 単位: KiB|MiB|GiB
in-memory-instance-size-limit
v8.4.0 の新機能
- TiKV インスタンスのメモリ内悲観的ロックのメモリ使用量制限を制御します。この制限を超えると、TiKV は悲観的ロックを永続的に書き込みます。
- デフォルト値:
100MiB
- 単位: KiB|MiB|GiB
クォータ
クォータリミッターに関連するコンフィグレーション項目。
max-delay-duration
v6.0.0 の新機能
- 単一の読み取りまたは書き込み要求がフォアグラウンドで処理されるまでに強制的に待機する最大時間。
- デフォルト値:
500ms
- 推奨設定: ほとんどの場合、デフォルト値を使用することをお勧めします。インスタンスでメモリ不足 (OOM) または激しいパフォーマンスジッターが発生する場合は、値を 1S に設定して、リクエストの待機時間を 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
(制限なしを意味します) - 単位: ミリCPU (たとえば、
1500
フォアグラウンド要求が 1.5V CPU を消費することを意味します) - 推奨設定: 4 つ以上のコアを持つインスタンスの場合は、デフォルト値
0
を使用します。4 つのコアを持つインスタンスの場合は、値を1000
から1500
の範囲に設定するとバランスが取れます。2 つのコアを持つインスタンスの場合は、値を1200
未満にしてください。
foreground-write-bandwidth
幅 v6.0.0 の新機能
- トランザクションがデータを書き込む帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します) - 推奨設定:
foreground-cpu-time
設定では書き込み帯域幅を制限するのに十分でない限り、ほとんどの場合はデフォルト値0
を使用します。このような例外の場合、コア数が 4 以下のインスタンスでは50MiB
より小さい値を設定することをお勧めします。
foreground-read-bandwidth
幅 v6.0.0 の新機能
- トランザクションとコプロセッサーがデータを読み取る帯域幅のソフト制限。
- デフォルト値:
0KiB
(制限なしを意味します) - 推奨設定:
foreground-cpu-time
設定では読み取り帯域幅を制限するのに十分でない限り、ほとんどの場合はデフォルト値0
を使用します。このような例外の場合、コア数が 4 以下のインスタンスでは20MiB
より小さい値を設定することをお勧めします。
バックグラウンドクォータリミッター
バックグラウンド クォータ リミッターに関連するコンフィグレーション項目。
TiKV がデプロイされているマシンのリソースが限られているとします。たとえば、CPU が 4v でメモリが16 G しかない場合などです。このような状況では、TiKV のバックグラウンドで処理される計算や読み取り/書き込み要求が多すぎる可能性があります。その結果、フォアグラウンドで使用される CPU リソースがそのような要求の処理に占有され、TiKV のパフォーマンスの安定性に影響を及ぼします。この状況を回避するには、バックグラウンド クォータ関連の構成項目を使用して、バックグラウンドで使用される CPU リソースを制限できます。要求によって Quota Limiter がトリガーされると、その要求は TiKV が CPU リソースを解放するまでしばらく待機する必要があります。正確な待機時間は要求の数によって異なり、最大待機時間はmax-delay-duration
の値以下になります。
background-cpu-time
v6.2.0 の新機能
- TiKV バックグラウンドで読み取りおよび書き込み要求を処理するために使用される CPU リソースのソフト制限。
- デフォルト値:
0
(制限なしを意味します) - 単位: ミリCPU (たとえば、
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 に基づくスケジュールが有効であることを意味します。
priority-ctl-strategy
v8.4.0 の新機能
低優先度タスクのフロー制御戦略を指定します。TiKV は、低優先度タスクにフロー制御を適用することで、高優先度タスクの実行を優先します。
- 値のオプション:
aggressive
: このポリシーは、優先度の高いタスクのパフォーマンスを優先し、優先度の高いタスクのスループットとレイテンシーは低下します。moderate
: このポリシーは、優先度の低いタスクにバランスのとれたフロー制御を適用し、優先度の高いタスクへの影響を少なくします。conservative
: このポリシーは、システム リソースが完全に利用されることを優先し、優先度の低いタスクが必要に応じてシステムで利用可能なリソースを完全に利用できるようにすることで、優先度の高いタスクのパフォーマンスに大きな影響を与えます。
- デフォルト値:
moderate
。
スプリット
ロードベーススプリットに関連するコンフィグレーション項目です。
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
インメモリエンジンv8.5.0 の新機能
storageレイヤーに関連する TiKV MVCC インメモリ エンジン (IME) 構成項目。
enable
v8.5.0 の新機能
注記:
この構成項目は構成ファイルで構成できますが、SQL ステートメントを使用してクエリすることはできません。
- マルチバージョンクエリを高速化するためにインメモリエンジンを有効にするかどうか。インメモリエンジンの詳細については、 TiKV MVCC インメモリエンジン参照してください。
- デフォルト値:
false
(メモリ内エンジンが無効であることを示します)
capacity
v8.5.0 の新機能
注記:
- インメモリ エンジンを有効にすると、
block-cache.capacity
自動的に 10% 減少します。capacity
手動で設定した場合、block-cache.capacity
自動的に減少しません。この場合、OOM を回避するために手動で値を調整する必要があります。
- インメモリ エンジンが使用できる最大メモリサイズを制御します。最大値は 5 GiB です。手動で設定して、より多くのメモリを使用することもできます。
- デフォルト値: システムメモリの 10% 。
gc-run-interval
v8.5.0 の新機能
- インメモリ エンジン GC が MVCC バージョンをキャッシュする時間間隔を制御します。このパラメータを減らすと、GC 頻度が増加し、MVCC バージョンの数が減少しますが、GC の CPU 消費量が増加し、インメモリ エンジン キャッシュ ミスの可能性が高くなります。
- デフォルト値:
"3m"
mvcc-amplification-threshold
v8.5.0 の新機能
- インメモリ エンジンがリージョンを選択してロードするときの MVCC 読み取り増幅のしきい値を制御します。デフォルト値は
10
で、リージョン内の 1 行を読み取るために 10 を超える MVCC バージョンの処理が必要な場合、このリージョンがインメモリ エンジンにロードされる可能性があることを示します。 - デフォルト値:
10