システム変数

TiDB システム変数は、設定がSESSIONまたはGLOBALスコープに適用されるという点で、MySQL と同様に動作します。

  • SESSIONスコープの変更は、現在のセッションにのみ影響します。
  • GLOBALスコープの変更はすぐに適用されます。この変数のスコープもSESSIONの場合、すべてのセッション (自分のセッションを含む) は引き続き現在のセッション値を使用します。
  • 変更はSETステートメントを使用して行われます。
# These two identical statements change a session variable SET tidb_distsql_scan_concurrency = 10; SET SESSION tidb_distsql_scan_concurrency = 10; # These two identical statements change a global variable SET @@global.tidb_distsql_scan_concurrency = 10; SET GLOBAL tidb_distsql_scan_concurrency = 10;

ノート:

いくつかのGLOBAL変数が TiDB クラスターに保持されます。このドキュメントの一部の変数にはPersists to clusterの設定があり、これはYesまたはNoに構成できます。

  • 設定がPersists to cluster: Yesの変数の場合、グローバル変数が変更されると、すべての TiDB サーバーに通知が送信され、システム変数キャッシュが更新されます。 TiDB サーバーを追加するか、既存の TiDB サーバーを再起動すると、永続化された構成値が自動的に使用されます。
  • Persists to cluster: No設定の変数の場合、変更は接続先のローカル TiDB インスタンスにのみ適用されます。値セットを保持するには、 tidb.toml構成ファイルで変数を指定する必要があります。

さらに、TiDB はいくつかの MySQL 変数を読み取り可能かつ設定可能として提供します。これは、アプリケーションとコネクタの両方が MySQL 変数を読み取るのが一般的であるため、互換性のために必要です。たとえば、JDBC コネクタは、動作に依存していないにもかかわらず、クエリ キャッシュ設定の読み取りと設定の両方を行います。

ノート:

値が大きいほど、常にパフォーマンスが向上するとは限りません。ほとんどの設定は各接続に適用されるため、ステートメントを実行している同時接続の数を考慮することも重要です。

安全な値を決定するときは、変数の単位を考慮してください。

  • スレッドの場合、安全な値は通常、CPU コアの数までです。
  • バイトの場合、安全な値は通常、システム メモリの量よりも小さくなります。
  • 時間については、単位が秒またはミリ秒である可能性があることに注意してください。

同じユニットを使用する変数は、同じリソースのセットを求めて競合する可能性があります。

変数参照

allow_auto_random_explicit_insert v4.0.3の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • INSERTステートメントでAUTO_RANDOM属性を持つ列の値を明示的に指定できるようにするかどうかを決定します。

auto_increment_increment

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1
  • 範囲: [1, 65535]
  • 列に割り当てられるAUTO_INCREMENTの値のステップ サイズを制御します。 auto_increment_offsetと組み合わせて使用することが多い。

auto_increment_offset

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1
  • 範囲: [1, 65535]
  • 列に割り当てられるAUTO_INCREMENT値の初期オフセットを制御します。この設定はauto_increment_incrementと組み合わせて使用されることがよくあります。例えば:
mysql> CREATE TABLE t1 (a int not null primary key auto_increment); Query OK, 0 rows affected (0.10 sec) mysql> set auto_increment_offset=1; Query OK, 0 rows affected (0.00 sec) mysql> set auto_increment_increment=3; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO t1 VALUES (),(),(),(); Query OK, 4 rows affected (0.04 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM t1; +----+ | a | +----+ | 1 | | 4 | | 7 | | 10 | +----+ 4 rows in set (0.00 sec)

自動コミット

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • 明示的なトランザクションでない場合にステートメントを自動的にコミットするかどうかを制御します。詳細については、 取引概要を参照してください。

block_encryption_mode

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: aes-128-ecb
  • 値のオプション: aes-128-ecbaes-192-ecbaes-256-ecbaes-128-cbcaes-192-cbcaes-256-cbcaes-128-ofbaes-192-ofbaes-256-ofbaes-128-cfbaes-192-cfbaes-256-cfb
  • この変数は、組み込み関数AES_ENCRYPT()およびAES_DECRYPT()の暗号化モードを設定します。

character_set_client

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4
  • クライアントから送信されたデータの文字セット。 TiDB での文字セットと照合順序の使用の詳細については、 文字セットと照合順序を参照してください。必要に応じてSET NAMESを使用して文字セットを変更することをお勧めします。

character_set_connection

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4
  • 指定された文字セットを持たない文字列リテラルの文字セット。

character_set_database

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4
  • この変数は、使用中のデフォルト データベースの文字セットを示します。この変数を設定することはお勧めしません。新しいデフォルト データベースが選択されると、サーバーは変数値を変更します。

character_set_results

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4
  • データがクライアントに送信されるときに使用される文字セット。

character_set_server

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4
  • サーバーのデフォルトの文字セット。

collation_connection

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4_bin
  • この変数は、現在の接続で使用される照合順序を示します。これは、MySQL 変数collation_connectionと一致しています。

collation_database

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4_bin
  • この変数は、使用中のデータベースのデフォルトの照合順序を示します。この変数を設定することはお勧めしません。新しいデータベースが選択されると、TiDB はこの変数の値を変更します。

collation_server

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: utf8mb4_bin
  • データベースの作成時に使用されるデフォルトの照合順序。

cte_max_recursion_depth

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1000
  • 範囲: [0, 4294967295]
  • 共通テーブル式の最大再帰深度を制御します。

データディレクトリ

  • スコープ: なし
  • デフォルト値: /tmp/tidb
  • この変数は、データが格納されている場所を示します。データが TiKV に保存されている場合、この場所はローカル パスまたは PDサーバーを指すことができます。
  • ip_address:portの形式の値は、起動時に TiDB が接続する PDサーバーを示します。

ddl_slow_threshold

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • デフォルト値: 300
  • 単位: ミリ秒
  • 実行時間がしきい値を超える DDL 操作をログに記録します。

default_authentication_plugin

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: mysql_native_password
  • 可能な値: mysql_native_passwordおよびcaching_sha2_password
  • この変数は、サーバーとクライアントの接続が確立されているときにサーバーが通知する認証方法を設定します。

この変数のその他の可能な値については、 認証プラグインのステータスを参照してください。

default_week_format

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 7]
  • WEEK()関数で使用される週の形式を設定します。

error_count

  • スコープ: なし
  • タイプ: 整数
  • メッセージを生成した最後のステートメントから発生したエラーの数を示す読み取り専用変数。

Foreign_key_checks

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • 互換性のために、TiDB は外部キー チェックをOFFとして返します。

group_concat_max_len

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1024
  • 範囲: [4, 18446744073709551615]
  • GROUP_CONCAT()関数内の項目の最大バッファー サイズ。

have_openssl

  • スコープ: なし
  • デフォルト値: DISABLED
  • MySQL との互換性のための読み取り専用変数。サーバーサーバーYESに設定されます。

have_ssl

  • スコープ: なし
  • デフォルト値: DISABLED
  • MySQL との互換性のための読み取り専用変数。サーバーサーバーYESに設定されます。

ホスト名

  • スコープ: なし
  • デフォルト値: (システムのホスト名)
  • 読み取り専用変数としての TiDBサーバーのホスト名。

ID v5.3.0 の新機能

この変数はlast_insert_idのエイリアスです。

init_connect

  • 範囲: グローバル
  • クラスターに永続化: はい
  • デフォルト値: ""
  • init_connectの機能により、最初に TiDBサーバーに接続したときに SQL ステートメントを自動的に実行できます。 CONNECTION_ADMINまたはSUPERの権限を持っている場合、このinit_connectステートメントは実行されません。 init_connectステートメントでエラーが発生した場合、ユーザー接続は終了します。

innodb_lock_wait_timeout

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 50
  • 範囲: [1, 3600]
  • 単位: 秒
  • 悲観的トランザクションのロック待機タイムアウト (デフォルト)。

interactive_timeout

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 28800
  • 範囲: [1, 31536000]
  • 単位: 秒
  • この変数は、対話型ユーザー セッションのアイドル タイムアウトを表します。対話型ユーザー セッションとは、 CLIENT_INTERACTIVEのオプションを使用してmysql_real_connect()の API を呼び出すことによって確立されたセッションを指します (たとえば、MySQL シェルと MySQL クライアント)。この変数は MySQL と完全に互換性があります。

last_insert_id

  • スコープ: セッション
  • デフォルト値: 0
  • この変数は、insert ステートメントによって生成された最後のAUTO_INCREMENTつまたはAUTO_RANDOMの値を返します。
  • last_insert_idの値は、関数LAST_INSERT_ID()によって返される値と同じです。

last_plan_from_binding v4.0 の新機能

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、前のステートメントで使用された実行計画が製本の影響を受けたかどうかを示すために使用されます。

last_plan_from_cache v4.0 の新機能

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、前のexecuteステートメントで使用された実行プランがプラン キャッシュから直接取得されたかどうかを示すために使用されます。

ライセンス

  • スコープ: なし
  • デフォルト値: Apache License 2.0
  • この変数は、TiDBサーバーのインストールのライセンスを示します。

log_bin

  • スコープ: なし
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 Binlogが使用されているかどうかを示します。

max_allowed_packet v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 67108864
  • 範囲: [1024, 1073741824] .値は 1024 の整数倍である必要があります。値が 1024 で割り切れない場合は、警告が表示され、値は切り捨てられます。たとえば、値が 1025 に設定されている場合、TiDB の実際の値は 1024 です。
  • サーバーとクライアントが 1 回のパケット送信で許可する最大パケット サイズ (バイト単位)。
  • この変数は MySQL と互換性があります。

最大接続数

  • 範囲: グローバル
  • クラスターに永続化: いいえ
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 100000]
  • 1 つの TiDB インスタンスに許可される接続の最大数。
  • 0は制限なしを意味します。

max_execution_time

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • 単位: ミリ秒
  • ステートメントの最大実行時間。デフォルト値は無制限 (ゼロ) です。

ノート:

MySQL とは異なり、システム変数max_execution_timeは現在、TiDB のすべての種類のステートメントで機能し、 SELECTステートメントに限定されません。タイムアウト値の精度は約 100ms です。これは、指定した正確なミリ秒でステートメントが終了しない可能性があることを意味します。

max_prepared_stmt_count

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [-1, 1048576]
  • セッション内のPREPAREステートメントの最大数を指定します。
  • -1は、セッション内のステートメントの最大数PREPAREに制限がないことを意味します。
  • 変数を上限1048576を超える値に設定すると、代わりに1048576が使用されます。
mysql> SET GLOBAL max_prepared_stmt_count = 1048577; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> SHOW WARNINGS; +---------+------+--------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------+ | Warning | 1292 | Truncated incorrect max_prepared_stmt_count value: '1048577' | +---------+------+--------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL VARIABLES LIKE 'max_prepared_stmt_count'; +-------------------------+---------+ | Variable_name | Value | +-------------------------+---------+ | max_prepared_stmt_count | 1048576 | +-------------------------+---------+ 1 row in set (0.00 sec)

plugin_dir

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • デフォルト値: ""
  • コマンドライン フラグで指定されたプラグインをロードするディレクトリを示します。

plugin_load

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • デフォルト値: ""
  • TiDB の起動時にロードするプラグインを示します。これらのプラグインは、コマンドライン フラグによって指定され、カンマで区切られます。

ポート

  • スコープ: なし
  • タイプ: 整数
  • デフォルト値: 4000
  • 範囲: [0, 65535]
  • MySQL プロトコルを話すときにtidb-serverがリッスンしているポート。

rand_seed1

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • この変数は、 RAND()の SQL 関数で使用されるランダム値ジェネレーターをシードするために使用されます。
  • この変数の動作は MySQL と互換性があります。

rand_seed2

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • この変数は、 RAND()の SQL 関数で使用されるランダム値ジェネレーターをシードするために使用されます。
  • この変数の動作は MySQL と互換性があります。

require_secure_transport v6.1.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数をONに設定するには、TLS が有効になっているセッションから TiDB に接続する必要があります。これにより、TLS が正しく構成されていない場合のロックアウト シナリオを防ぐことができます。
  • この設定は以前はtidb.tomlオプション ( security.require-secure-transport ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

skip_name_resolve v5.2.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 tidb-serverインスタンスが接続ハンドシェイクの一部としてホスト名を解決するかどうかを制御します。
  • DNS が信頼できない場合、このオプションを有効にしてネットワーク パフォーマンスを向上させることができます。

ノート:

skip_name_resolve=ONの場合、ID にホスト名を持つユーザーはサーバーにログインできなくなります。例えば:

CREATE USER 'appuser'@'apphost' IDENTIFIED BY 'app-password';

この例では、 apphostを IP アドレスまたはワイルドカード ( % ) に置き換えることをお勧めします。

ソケット

  • スコープ: なし
  • デフォルト値: ""
  • MySQL プロトコルを話すときにtidb-serverがリッスンしているローカル UNIX ソケット ファイル。

sql_log_bin

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • 変更をBinlogに書き込むかどうかを示します。

ノート:

TiDB の将来のバージョンでは、これをセッション変数としてのみ設定できるようになる可能性があるため、 sql_log_binをグローバル変数として設定することはお勧めしません。

sql_mode

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  • この変数は、多数の MySQL 互換性動作を制御します。詳細については、 SQL モードを参照してください。

sql_select_limit v4.0.2の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 18446744073709551615
  • 範囲: [0, 18446744073709551615]
  • 単位: 行
  • SELECTステートメントによって返される行の最大数。

ssl_ca

  • スコープ: なし
  • デフォルト値: ""
  • 認証局ファイルの場所 (存在する場合)。この変数の値は、TiDB 構成項目ssl-caによって定義されます。

ssl_cert

  • スコープ: なし
  • デフォルト値: ""
  • SSL/TLS 接続に使用される証明書ファイルの場所 (ファイルがある場合)。この変数の値は、TiDB 構成項目ssl-certによって定義されます。

ssl_key

  • スコープ: なし
  • デフォルト値: ""
  • SSL/TLS 接続に使用される秘密鍵ファイル (存在する場合) の場所。この変数の値は、TiDB 構成項目ssl-keyによって定義されます。

system_time_zone

  • スコープ: なし
  • デフォルト値: (システムに依存)
  • この変数は、TiDB が最初にブートストラップされたときのシステム タイム ゾーンを示します。 time_zoneも参照してください。

tidb_allow_batch_cop v4.0 の新機能

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: 整数

  • デフォルト値: 1

  • 範囲: [0, 2]

  • この変数は、TiDB がコプロセッサー要求を TiFlash に送信する方法を制御するために使用されます。次の値があります。

    • 0 : リクエストをバッチで送信しない
    • 1 :集計および結合要求はバッチで送信されます
    • 2 : すべてのコプロセッサー要求がバッチで送信されます

tidb_allow_fallback_to_tikv v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: ""
  • この変数は、TiKV にフォールバックするストレージ エンジンのリストを指定するために使用されます。リスト内の指定されたストレージ エンジンの障害が原因で SQL ステートメントの実行が失敗した場合、TiDB は TiKV を使用してこの SQL ステートメントの実行を再試行します。この変数は、"" または "tiflash" に設定できます。この変数が「tiflash」に設定されている場合、TiFlash がタイムアウト エラー (エラー コード: ErrTiFlashServerTimeout) を返した場合、TiDB は TiKV でこの SQL ステートメントの実行をリトライします。

tidb_allow_function_for_expression_index v5.2.0の新機能

  • スコープ: なし
  • デフォルト値: lower, md5, reverse, tidb_shard, upper, vitess_hash
  • この変数は、式インデックスの作成に使用できる関数を示すために使用されます。

tidb_allow_mpp v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • TiFlash の MPP モードを使用してクエリを実行するかどうかを制御します。値のオプションは次のとおりです。
    • 0またはOFF 。これは、MPP モードが使用されないことを意味します。
    • 1またはON 。これは、オプティマイザーが (デフォルトで) コストの見積もりに基づいて MPP モードを使用するかどうかを決定することを意味します。

MPP は、TiFlash エンジンによって提供される分散コンピューティング フレームワークであり、ノード間のデータ交換を可能にし、高性能で高スループットの SQL アルゴリズムを提供します。 MPP モードの選択については、 MPP モードを選択するかどうかを制御しますを参照してください。

tidb_allow_remove_auto_inc v2.1.18 および v3.0.4 の新機能

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 ALTER TABLE MODIFYつまたはALTER TABLE CHANGEのステートメントを実行して列のAUTO_INCREMENTのプロパティを削除できるかどうかを設定するために使用されます。デフォルトでは許可されていません。

tidb_analyze_version v5.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 2
  • 範囲: [1, 2]
  • TiDB が統計を収集する方法を制御します。
  • v5.3.0 以降のバージョンでは、この変数のデフォルト値は2です。クラスターが v5.3.0 より前のバージョンから v5.3.0 以降にアップグレードされた場合、デフォルト値のtidb_analyze_versionは変更されません。詳細な紹介については、 統計入門を参照してください。

tidb_auto_analyze_end_time

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 時間
  • デフォルト値: 23:59 +0000
  • この変数は、統計の自動更新が許可される時間枠を制限するために使用されます。たとえば、午前 1 時から午前 3 時までの自動統計更新のみを許可するには、 tidb_auto_analyze_start_time='01:00 +0000'tidb_auto_analyze_end_time='03:00 +0000'を設定します。

tidb_auto_analyze_ratio

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • デフォルト値: 0.5
  • 範囲: [0, 18446744073709551615]
  • この変数は、TiDB がテーブル統計を更新するためにバックグラウンド スレッドでANALYZE TABLEを自動的に実行するときのしきい値を設定するために使用されます。たとえば、値 0.5 は、テーブル内の行の 50% 以上が変更されたときに自動分析がトリガーされることを意味します。自動分析は、 tidb_auto_analyze_start_timeおよびtidb_auto_analyze_end_timeを指定することにより、1 日の特定の時間帯のみに実行するように制限できます。

ノート:

この機能には、システム変数tidb_enable_auto_analyzeONに設定する必要があります。

tidb_auto_analyze_start_time

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 時間
  • デフォルト値: 00:00 +0000
  • この変数は、統計の自動更新が許可される時間枠を制限するために使用されます。たとえば、午前 1 時から午前 3 時までの自動統計更新のみを許可するには、 tidb_auto_analyze_start_time='01:00 +0000'tidb_auto_analyze_end_time='03:00 +0000'を設定します。

tidb_max_auto_analyze_timeの新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • デフォルト値: 43200
  • 範囲: [0, 2147483647]
  • 単位:秒
  • この変数は、自動ANALYZEタスクの最大実行時間を指定するために使用されます。自動ANALYZEタスクの実行時間が指定時間を超えると、タスクは終了します。この変数の値が0の場合、自動ANALYZEタスクの最大実行時間に制限はありません。

tidb_backoff_lock_fast

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 10
  • 範囲: [1, 2147483647]
  • この変数は、読み取り要求がロックに一致するbackoff回を設定するために使用されます。

tidb_backoff_weight

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: 整数

  • デフォルト値: 2

  • 範囲: [0, 2147483647]

  • この変数は、TiDB backoffの最大時間、つまり、内部ネットワークまたは他のコンポーネント (TiKV、PD) の障害が発生したときにリトライ要求を送信するための最大リトライ時間の重みを増やすために使用されます。この変数は、最大再試行時間を調整するために使用でき、最小値は 1 です。

    たとえば、TiDB が PD から TSO を取得するための基本タイムアウトは 15 秒です。 tidb_backoff_weight = 2の場合、TSO 取得の最大タイムアウトは、基本時間 2 = 30 秒*です。

    ネットワーク環境が劣悪な場合、この変数の値を適切に増やすと、タイムアウトによってアプリケーション側に報告されるエラーを効果的に軽減できます。アプリケーション側でエラー情報をより迅速に受け取りたい場合は、この変数の値を最小限に抑えてください。

tidb_batch_commit

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、非推奨のバッチコミット機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、いくつかのステートメントをグループ化することでトランザクションが複数のトランザクションに分割され、非アトミックにコミットされる可能性がありますが、これはお勧めできません。

tidb_batch_delete

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、非推奨のバッチ dml 機能の一部であるバッチ削除機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、 DELETEのステートメントが複数のトランザクションに分割され、非アトミックにコミットされる可能性があります。これを機能させるには、 tidb_enable_batch_dmlを有効にしてtidb_dml_batch_sizeに正の値を設定する必要もありますが、これはお勧めできません。

tidb_batch_insert

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、非推奨のバッチ dml 機能の一部であるバッチ挿入機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、 INSERTのステートメントが複数のトランザクションに分割され、非アトミックにコミットされる可能性があります。これを機能させるには、 tidb_enable_batch_dmlを有効にしてtidb_dml_batch_sizeに正の値を設定する必要もありますが、これはお勧めできません。

tidb_batch_pending_tiflash_count v6.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 4000
  • スコープ: [0, 2147483647]
  • ALTER DATABASE SET TIFLASH REPLICAを使用して TiFlash レプリカを追加する場合に、許容される使用不可テーブルの最大数を指定します。使用できないテーブルの数がこの制限を超えると、操作が停止するか、残りのテーブルの TiFlash レプリカの設定が非常に遅くなります。

tidb_broadcast_join_threshold_count v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 10240
  • 範囲: [0, 9223372036854775807]
  • 単位: 行
  • 結合操作のオブジェクトがサブクエリに属している場合、オプティマイザはサブクエリの結果セットのサイズを見積もることができません。この場合、サイズは結果セットの行数によって決まります。サブクエリの推定行数がこの変数の値より少ない場合、ブロードキャスト ハッシュ結合アルゴリズムが使用されます。それ以外の場合は、Shuffled Hash Join アルゴリズムが使用されます。

tidb_broadcast_join_threshold_size v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 104857600 (100 MiB)
  • 範囲: [0, 9223372036854775807]
  • 単位: バイト
  • テーブル サイズが変数の値より小さい場合は、ブロードキャスト ハッシュ結合アルゴリズムが使用されます。それ以外の場合は、Shuffled Hash Join アルゴリズムが使用されます。

tidb_build_stats_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 4
  • 単位: スレッド
  • この変数は、 ANALYZEステートメントの同時実行を設定するために使用されます。
  • 変数に大きな値を設定すると、他のクエリの実行パフォーマンスに影響します。

tidb_capture_plan_baselines v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 ベースラインのキャプチャ機能を有効にするかどうかを制御するために使用されます。この機能はステートメント サマリーに依存するため、ベースライン キャプチャを使用する前にステートメント サマリーを有効にする必要があります。
  • この機能を有効にすると、ステートメント サマリーの履歴 SQL ステートメントが定期的に走査され、少なくとも 2 回出現する SQL ステートメントのバインドが自動的に作成されます。

tidb_check_mb4_value_in_utf8

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、 utf8文字セットが基本多言語面 (BMP)からの値のみを格納することを強制するために使用されます。 BMP の外に文字を格納するには、 utf8mb4文字セットを使用することをお勧めします。
  • utf8番目のチェックがより緩和された以前のバージョンの TiDB からクラスターをアップグレードする場合は、このオプションを無効にする必要がある場合があります。詳細については、 アップグレード後の FAQを参照してください。

tidb_checksum_table_concurrency

  • スコープ: セッション
  • デフォルト値: 4
  • 単位: スレッド
  • この変数は、 ADMIN CHECKSUM TABLEステートメントを実行するスキャン インデックスの同時実行数を設定するために使用されます。
  • 変数に大きな値を設定すると、他のクエリの実行パフォーマンスに影響します。

tidb_committer_concurrency v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 128
  • 範囲: [1, 10000]
  • 単一トランザクションのコミット フェーズでのコミットの実行に関連する要求のゴルーチンの数。
  • コミットするトランザクションが大きすぎる場合、トランザクションがコミットされるときのフロー制御キューの待機時間が長すぎる可能性があります。この状況では、構成値を増やしてコミットを高速化できます。
  • この設定は以前はtidb.tomlオプション ( performance.committer-concurrency ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_config

  • スコープ: セッション
  • デフォルト値: ""
  • この変数は読み取り専用です。現在の TiDBサーバーの構成情報を取得するために使用されます。

tidb_constraint_check_in_place

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: ブール値

  • デフォルト値: OFF

  • この設定は楽観的なトランザクションにのみ適用されます。この変数がOFFに設定されている場合、UNIQUE インデックスの重複値のチェックは、トランザクションがコミットされるまで延期されます。これはパフォーマンスの向上に役立ちますが、一部のアプリケーションでは予期しない動作になる場合があります。詳細は制約を参照してください。

    • ゼロに設定し、楽観的なトランザクションを使用する場合:

      tidb> create table t (i int key); tidb> insert into t values (1); tidb> begin optimistic; tidb> insert into t values (1); Query OK, 1 row affected tidb> commit; -- Check only when a transaction is committed. ERROR 1062 : Duplicate entry '1' for key 'PRIMARY'
    • 1 に設定し、楽観的トランザクションを使用する場合:

      tidb> set @@tidb_constraint_check_in_place=1; tidb> begin optimistic; tidb> insert into t values (1); ERROR 1062 : Duplicate entry '1' for key 'PRIMARY'

制約チェックは、ペシミスティック トランザクションに対して常に実行されます (デフォルト)。

tidb_current_ts

  • スコープ: セッション
  • デフォルト値: 0
  • この変数は読み取り専用です。現在のトランザクションのタイムスタンプを取得するために使用されます。

tidb_ddl_error_count_limit

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 512
  • 範囲: [0, 9223372036854775807]
  • この変数は、DDL 操作が失敗した場合の再試行回数を設定するために使用されます。再試行回数がパラメーター値を超えると、間違った DDL 操作が取り消されます。

tidb_ddl_reorg_batch_size

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 256
  • 範囲: [32, 10240]
  • 単位: 行
  • この変数は、DDL 操作の第re-organizeフェーズでバッチ サイズを設定するために使用されます。たとえば、TiDB がADD INDEX操作を実行する場合、インデックス データはtidb_ddl_reorg_worker_cnt (数) の同時ワーカーによってバックフィルされる必要があります。各ワーカーは、バッチでインデックス データをバックフィルします。
    • ADD INDEX操作中にUPDATEREPLACEなどの多くの更新操作が存在する場合、バッチ サイズが大きいほど、トランザクションの競合が発生する可能性が高くなります。この場合、バッチ サイズをより小さい値に調整する必要があります。最小値は 32 です。
    • トランザクションの競合が存在しない場合は、バッチ サイズを大きな値に設定できます (ワーカー数を考慮してください。参考としてオンライン ワークロードとADD INDEX操作の相互作用テストを参照してください)。これにより、データのバックフィルの速度を上げることができますが、TiKV への書き込み圧力も高くなります。

tidb_ddl_reorg_priority

  • スコープ: セッション
  • デフォルト値: PRIORITY_LOW
  • この変数は、第re-organizeフェーズで第ADD INDEX操作を実行する優先順位を設定するために使用されます。
  • この変数の値はPRIORITY_LOWPRIORITY_NORMALまたはPRIORITY_HIGHに設定できます。

tidb_ddl_reorg_worker_cnt

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 4
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 re-organizeフェーズでの DDL 操作の並行性を設定するために使用されます。

tidb_disable_txn_auto_retry

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: ブール値

  • デフォルト値: ON

  • この変数は、明示的楽観的トランザクションの自動再試行を無効にするかどうかを設定するために使用されます。デフォルト値ONは、トランザクションが TiDB で自動的に再試行されず、 COMMITのステートメントがアプリケーションレイヤーで処理する必要があるエラーを返す可能性があることを意味します。

    値をOFFに設定すると、TiDB が自動的にトランザクションを再試行し、 COMMITのステートメントからのエラーが少なくなります。更新が失われる可能性があるため、この変更を行うときは注意してください。

    この変数は、自動的にコミットされた暗黙のトランザクションと、TiDB で内部的に実行されるトランザクションには影響しません。これらのトランザクションの最大再試行回数は、 tidb_retry_limitの値によって決まります。

    詳細については、 再試行の制限を参照してください。

    この変数は楽観的なトランザクションにのみ適用され、悲観的なトランザクションには適用されません。悲観的トランザクションの再試行回数はmax_retry_countで制御されます。

tidb_distsql_scan_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 15
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 scan操作の並行性を設定するために使用されます。
  • OLAP シナリオでは大きな値を使用し、OLTP シナリオでは小さな値を使用します。
  • OLAP シナリオの場合、最大値はすべての TiKV ノードの CPU コア数を超えてはなりません。
  • テーブルに多数のパーティションがある場合は、TiKV がメモリ不足 (OOM) にならないように、(スキャンするデータのサイズとスキャンの頻度によって決定される) 変数値を適切に減らすことができます。

tidb_dml_batch_size

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • 単位: 行
  • この値が0より大きい場合、TiDB はINSERTLOAD DATAなどの commit ステートメントを小さなトランザクションにバッチ処理します。これにより、メモリ使用量が削減され、一括変更によってtxn-total-size-limitに到達しないことが保証されます。
  • 0のみがACID準拠を提供します。これを他の値に設定すると、TiDB の原子性と分離の保証が壊れます。
  • この変数を機能させるには、 tidb_enable_batch_dmlと、少なくともtidb_batch_inserttidb_batch_deleteの 1 つを有効にする必要もあります。

tidb_enable_1pc v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、1 つのリージョンのみに影響するトランザクションに対して 1 フェーズ コミット機能を有効にするかどうかを指定するために使用されます。よく使用される 2 フェーズ コミットと比較して、1 フェーズ コミットはトランザクション コミットのレイテンシーを大幅に短縮し、スループットを向上させることができます。

ノート:

  • デフォルト値のONは、新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFFが使用されます。
  • TiDB Binlogを有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにTiCDCを使用することをお勧めします。
  • このパラメーターを有効にすることは、1 フェーズ コミットがトランザクション コミットのオプション モードになることを意味するだけです。実際、トランザクション コミットの最適なモードは TiDB によって決定されます。

tidb_enable_amend_pessimistic_txn v4.0.7の新機能

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: ブール値

  • デフォルト値: OFF

  • この変数は、 AMEND TRANSACTION機能を有効にするかどうかを制御するために使用されます。ペシミスティック トランザクションでAMEND TRANSACTION機能を有効にした場合、同時 DDL 操作と SCHEMA VERSION 変更がこのトランザクションに関連付けられたテーブルに存在する場合、TiDB はトランザクションの修正を試みます。 TiDB は、トランザクション コミットを修正して、コミットが最新の有効な SCHEMA VERSION と一致するようにし、トランザクションがInformation schema is changedエラーを取得することなく正常にコミットできるようにします。この機能は、次の同時 DDL 操作で有効です。

    • ADD COLUMN回またはDROP COLUMNの操作。
    • フィールドの長さを増やすMODIFY COLUMNまたはCHANGE COLUMNの操作。
    • トランザクションが開かれる前にインデックス列が作成されるADD INDEXまたはDROP INDEXの操作。

ノート:

現在、この機能は一部のシナリオで TiDB Binlogと互換性がなく、トランザクションでセマンティックの変更を引き起こす可能性があります。この機能の使用上の注意事項については、 トランザクション セマンティックに関する非互換性の問題およびTiDB Binlogに関する非互換性の問題を参照してください。

tidb_enable_async_commit v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、2 フェーズ トランザクション コミットの第 2 フェーズの非同期コミット機能を有効にして、バックグラウンドで非同期に実行するかどうかを制御します。この機能を有効にすると、トランザクション コミットのレイテンシーを短縮できます。

ノート:

  • デフォルト値のONは、新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFFが使用されます。
  • TiDB Binlogを有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにTiCDCを使用することをお勧めします。
  • このパラメーターを有効にすることは、Async Commit がトランザクション コミットのオプション モードになることを意味するだけです。実際、トランザクション コミットの最適なモードは TiDB によって決定されます。

tidb_enable_auto_analyze v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • TiDB がテーブル統計をバックグラウンド操作として自動的に更新するかどうかを決定します。
  • この設定は以前はtidb.tomlオプション ( performance.run-auto-analyze ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_enable_auto_increment_in_generated

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、生成された列または式インデックスを作成するときにAUTO_INCREMENT列を含めるかどうかを決定するために使用されます。

tidb_enable_batch_dml

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、非推奨のバッチ dml 機能を有効にするかどうかを制御します。有効にすると、特定のステートメントが複数のトランザクションに分割される可能性がありますが、これはアトミックではないため、注意して使用する必要があります。 batch-dml を使用する場合は、操作対象のデータに対して同時操作がないことを確認する必要があります。これを機能させるには、 tidb_batch_dml_sizeに正の値を指定し、少なくともtidb_batch_inserttidb_batch_deleteのいずれかを有効にする必要があります。

tidb_enable_change_multi_schema

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、1 つのALTER TABLEステートメントで複数の列またはインデックスを変更できるかどうかを制御するために使用されます。この変数の値がONの場合、次のマルチスキーマ変更のみがサポートされます。
    • 複数の列を追加します。たとえば、 ATLER TABLE t ADD COLUMN c1 INT, ADD COLUMN c2 INT;です。
    • 複数の列をドロップします。たとえば、 ATLER TABLE t DROP COLUMN c1, DROP COLUMN c2;です。
    • 複数のインデックスを削除します。たとえば、 ATLER TABLE t DROP INDEX i1, DROP INDEX i2;です。
    • 単一列インデックスでカバーされている列を削除します。たとえば、スキーマにINDEX idx(c1)が含まれるALTER TABLE t DROP COLUMN c1

tidb_enable_cascades_planner

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、カスケード プランナーを有効にするかどうかを制御するために使用されます。

tidb_enable_chunk_rpc v4.0 の新機能

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、コプロセッサでChunkデータ エンコーディング フォーマットを有効にするかどうかを制御するために使用されます。

tidb_enable_clustered_index v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: INT_ONLY
  • 可能な値: OFFONINT_ONLY
  • この変数は、デフォルトで主キーをクラスター化インデックスとして作成するかどうかを制御するために使用されます。ここでの「デフォルト」とは、ステートメントがキーワードCLUSTERED / NONCLUSTEREDを明示的に指定していないことを意味します。サポートされている値はOFFON 、およびINT_ONLYです。
    • OFFは、主キーが既定で非クラスター化インデックスとして作成されることを示します。
    • ONは、主キーが既定でクラスター化インデックスとして作成されることを示します。
    • INT_ONLYは、動作が構成アイテムalter-primary-keyによって制御されることを示します。 alter-primary-keytrueに設定されている場合、すべての主キーはデフォルトで非クラスター化インデックスとして作成されます。 falseに設定すると、整数列で構成される主キーのみがクラスター化インデックスとして作成されます。

tidb_enable_collect_execution_info

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、各オペレーターの実行情報をスロー クエリ ログに記録するかどうかを制御します。

tidb_enable_column_tracking v5.4.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、TiDB がPREDICATE COLUMNSを収集できるようにするかどうかを制御します。収集を有効にした後、無効にすると、以前に収集されたPREDICATE COLUMNSの情報はクリアされます。詳細については、 一部の列で統計を収集するを参照してください。

tidb_enable_enhanced_security

  • スコープ: なし
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、接続している TiDBサーバーで Security Enhanced Mode (SEM) が有効になっているかどうかを示します。この値を変更するには、TiDBサーバー構成ファイルで値enable-semを変更し、TiDBサーバーを再起動する必要があります。
  • SEM は、次のようなシステムの設計に触発されていますセキュリティが強化された Linux 。これにより、MySQL SUPER権限を持つユーザーの能力が低下し、代わりにRESTRICTEDつのきめ細かい権限を付与する必要があります。これらのきめの細かい権限には次のものがあります。
    • RESTRICTED_TABLES_ADMIN : mysqlのスキーマのシステム テーブルにデータを書き込み、 information_schemaのテーブルの機密列を表示する機能。
    • RESTRICTED_STATUS_ADMIN : コマンドSHOW STATUSで機密変数を表示する機能。
    • RESTRICTED_VARIABLES_ADMIN : SHOW [GLOBAL] VARIABLESおよびSETで機密変数を表示および設定する機能。
    • RESTRICTED_USER_ADMIN : 他のユーザーがユーザー アカウントを変更したり削除したりできないようにする機能。

tidb_enable_exchange_partition

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 exchange partitions with tables機能を有効にするかどうかを制御します。デフォルト値はOFFです。つまり、 exchange partitions with tablesはデフォルトで無効になっています。

tidb_enable_extended_stats

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、オプティマイザをガイドするために TiDB が拡張統計を収集できるかどうかを示します。詳細については、 拡張統計の概要を参照してください。

tidb_enable_fast_analyze

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、統計Fast Analyze機能を有効にするかどうかを設定するために使用されます。
  • 統計Fast Analyze機能が有効になっている場合、TiDB は統計として約 10,000 行のデータをランダムにサンプリングします。データが偏在している場合やデータサイズが小さい場合、統計精度は低くなります。これにより、不適切なインデックスを選択するなど、最適でない実行計画が発生する可能性があります。通常のAnalyzeステートメントの実行時間が許容できる場合は、 Fast Analyze機能を無効にすることをお勧めします。

tidb_enable_historical_stats

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、未リリースの機能に使用されます。変数値を変更しないでください

tidb_enable_index_merge v4.0 の新機能

ノート:

  • TiDB クラスターを v4.0.0 より前のバージョンから v5.4.0 以降にアップグレードすると、実行計画の変更によるパフォーマンスの低下を防ぐために、この変数はデフォルトで無効になります。

  • TiDB クラスターを v4.0.0 以降から v5.4.0 以降にアップグレードした後、この変数はアップグレード前の設定のままです。

  • v5.4.0 以降、新しくデプロイされた TiDB クラスターの場合、この変数はデフォルトで有効になっています。

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、インデックス マージ機能を有効にするかどうかを制御するために使用されます。

tidb_enable_index_merge_join

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • IndexMergeJoin演算子を有効にするかどうかを指定します。
  • この変数は、TiDB の内部操作にのみ使用されます。調整することはお勧めしません。そうしないと、データの正確性が影響を受ける可能性があります。

tidb_enable_legacy_instance_scope v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数では、 SET SESSIONおよびSET GLOBAL構文を使用してINSTANCEのスコープ変数を設定できます。
  • このオプションは、以前のバージョンの TiDB との互換性のためにデフォルトで有効になっています。

tidb_enable_list_partition v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、 LIST (COLUMNS) TABLE PARTITION機能を有効にするかどうかを設定するために使用されます。

tidb_enable_local_txn

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、未リリースの機能に使用されます。変数値を変更しないでください

tidb_enable_mutation_checker v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、DML ステートメントの実行中にデータとインデックス間の整合性をチェックするために使用されるツールである TiDB ミューテーション チェッカーを有効にするかどうかを制御するために使用されます。チェッカーがステートメントのエラーを返した場合、TiDB はステートメントの実行をロールバックします。この変数を有効にすると、CPU 使用率がわずかに増加します。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。
  • v6.0.0 以降のバージョンの新しいクラスターの場合、デフォルト値はONです。 v6.0.0 より前のバージョンからアップグレードする既存のクラスターの場合、デフォルト値はOFFです。

tidb_enable_new_cost_interface

この変数は、v6.2.0 以降で利用可能で、v6.1 では使用できない機能に関連付けられています。詳細については、v6.2 のドキュメントtidb_enable_new_cost_interfaceを参照してください。

tidb_enable_new_only_full_group_by_check v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: OFF
  • 値のオプション: OFFおよびON
  • この変数は、TiDB がONLY_FULL_GOUP_BYチェックを実行するときの動作を制御します。 ONLY_FULL_GROUP_BYの詳細については、 MySQL ドキュメントを参照してください。 v6.1.0 では、TiDB はこのチェックをより厳密かつ正確に処理します。
  • バージョンのアップグレードに起因する潜在的な互換性の問題を回避するために、この変数のデフォルト値は v6.1.0 ではOFFです。

tidb_enable_noop_functions v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: OFF
  • 可能な値: OFFONWARN
  • デフォルトでは、まだ実装されていない機能の構文を使用しようとすると、TiDB はエラーを返します。変数値がONに設定されている場合、TiDB はそのような利用できない機能のケースを黙って無視します。これは、SQL コードを変更できない場合に役立ちます。
  • noop関数を有効にすると、次の動作が制御されます。
    • LOCK IN SHARE MODE構文
    • SQL_CALC_FOUND_ROWS構文
    • START TRANSACTION READ ONLYSET TRANSACTION READ ONLYの構文
    • tx_read_onlytransaction_read_onlyoffline_modesuper_read_onlyread_only 、およびsql_auto_is_nullシステム変数
    • GROUP BY <expr> ASC|DESC構文

tidb_enable_outer_join_reorder v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: v6.1.0 では、デフォルト値はONです。 v6.1.0 以降、デフォルト値はOFFです。
  • v6.1.0 以降、TiDB の結合したテーブルの再配置アルゴリズムは Outer Join をサポートしています。この変数は、サポートの動作を制御します。デフォルト値はOFFです。これは、Join Reorder の Outer Join のサポートがデフォルトで無効になっていることを意味します。
  • v6.1.0 より前のバージョンからアップグレードされたクラスターの場合、デフォルト値はOFFです。 v6.1.0 からアップグレードされたクラスターの場合、デフォルト値はONです。

tidb_enable_ordered_result_mode

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: OFF
  • 最終出力結果を自動的にソートするかどうかを指定します。
  • たとえば、この変数を有効にすると、TiDB はSELECT a, MAX(b) FROM t GROUP BY aSELECT a, MAX(b) FROM t GROUP BY a ORDER BY a, MAX(b)として処理します。

tidb_enable_paging v5.4.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 IndexLookUpのオペレーターでコプロセッサー要求を送信するためにページングの方法を使用するかどうかを制御します。
  • ユーザー シナリオ: IndexLookupLimitを使用し、 LimitIndexScanにプッシュできない読み取りクエリの場合、読み取りクエリの待機時間が長くなり、 レイテンシーのunified read poolの CPU 使用率が高くなる可能性があります。このような場合、 Limit演算子は小さなデータセットしか必要としないため、 tidb_enable_pagingからONを設定すると、TiDB が処理するデータが少なくなり、クエリのレイテンシーとリソース消費が削減されます。
  • tidb_enable_pagingが有効な場合、プッシュダウンできず960未満のLimitIndexLookUpのリクエストに対して、TiDB はページングの方法を使用してコプロセッサ リクエストを送信します。 Limitが少ないほど、最適化がより明確になります。

tidb_enable_parallel_apply v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 Applyオペレーターの並行性を有効にするかどうかを制御します。同時実行数はtidb_executor_concurrency変数によって制御されます。 Applyのオペレーターは相関サブクエリを処理し、デフォルトでは同時実行性がないため、実行速度が遅くなります。この変数の値を1に設定すると、同時実行性が向上し、実行速度が向上します。現在、 Applyの同時実行はデフォルトで無効になっています。

tidb_enable_pipelined_window_function

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、ウィンドウ関数にパイプライン実行アルゴリズムを使用するかどうかを指定します。

tidb_enable_prepared_plan_cache v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • プリペアドプランキャッシュを有効にするかどうかを決定します。有効にすると、 PrepareExecuteの実行プランがキャッシュされるため、以降の実行では実行プランの最適化がスキップされ、パフォーマンスが向上します。
  • この設定は以前はtidb.tomlオプション ( prepared-plan-cache.enabled ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_enable_pseudo_for_outdated_stats v5.3.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、統計が古い場合にテーブルの統計を使用する際のオプティマイザの動作を制御します。
  • オプティマイザは、テーブルの統計が古いかどうかを次のように判断します。統計を取得するために最後にテーブルでANALYZEが実行されてから、テーブル行の 80% が変更された場合 (変更された行数を合計行数で割った値) )、オプティマイザは、このテーブルの統計が古いと判断します。この比率は、 pseudo-estimate-ratio構成を使用して変更できます。
  • デフォルトでは (変数値がONの場合)、表の統計が古い場合、オプティマイザーは、合計行数を除いて、表の統計がもはや信頼できないと判断します。次に、オプティマイザは疑似統計を使用します。変数の値をOFFに設定すると、表の統計が古くなっても、オプティマイザーは引き続き統計を使用します。
  • このテーブルでANALYZEを実行せずにテーブルのデータが頻繁に変更される場合は、実行計画を安定させるために、変数の値をOFFに設定できます。

tidb_enable_rate_limit_action

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、データを読み取るオペレーターの動的メモリー制御機能を有効にするかどうかを制御します。デフォルトでは、この演算子は、データの読み取りを許可するスレッドの最大数を有効にしtidb_distsql_scan_concurrency 。 1 つの SQL ステートメントのメモリ使用量が毎回tidb_mem_quota_queryを超えると、データを読み取るオペレーターは 1 つのスレッドを停止します。
  • データを読み取るオペレーターのスレッドが 1 つしか残っておらず、単一の SQL ステートメントのメモリー使用量がtidb_mem_quota_queryを超え続けている場合、この SQL ステートメントはスピル, データをディスクになどの他のメモリー制御動作をトリガーします。

tidb_enable_slow_log

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、スロー ログ機能を有効にするかどうかを制御するために使用されます。

tidb_enable_stmt_summary v3.0.4の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、ステートメント要約機能を有効にするかどうかを制御するために使用されます。有効にすると、時間消費などの SQL 実行情報がinformation_schema.STATEMENTS_SUMMARYシステム テーブルに記録され、SQL パフォーマンスの問題を特定してトラブルシューティングします。

tidb_enable_strict_double_type_check v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、タイプDOUBLEの無効な定義でテーブルを作成できるかどうかを制御するために使用されます。この設定は、タイプの検証がそれほど厳密ではない以前のバージョンの TiDB からのアップグレード パスを提供することを目的としています。
  • デフォルト値のONは MySQL と互換性があります。

たとえば、浮動小数点型の精度が保証されていないため、型DOUBLE(10)は無効と見なされるようになりました。 tidb_enable_strict_double_type_checkOFFに変更すると、テーブルが作成されます。

mysql> CREATE TABLE t1 (id int, c double(10)); ERROR 1149 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use mysql> SET tidb_enable_strict_double_type_check = 'OFF'; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE t1 (id int, c double(10)); Query OK, 0 rows affected (0.09 sec)

ノート:

MySQL ではFLOATの型の精度が許可されているため、この設定は型DOUBLEにのみ適用されます。この動作は MySQL 8.0.17 以降では推奨されておらず、 FLOATまたはDOUBLE型の精度を指定することはお勧めしません。

tidb_enable_table_partition

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: ON
  • 可能な値: OFFONAUTO
  • この変数は、 TABLE PARTITIONつの機能を有効にするかどうかを設定するために使用されます。
    • ONは、1 つの列でレンジ パーティション分割、ハッシュ パーティション分割、およびレンジ列パーティション分割を有効にすることを示します。
    • AUTOONと同じように関数します。
    • OFFは、 TABLE PARTITION機能を無効にすることを示します。この場合、パーティション テーブルを作成する構文は実行できますが、作成されるテーブルはパーティション化されたものではありません。

tidb_enable_telemetry v4.0.2の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、TiDB でのテレメトリ コレクションを有効にするかどうかを動的に制御するために使用されます。値をOFFに設定すると、テレメトリ コレクションが無効になります。すべての TiDB インスタンスでenable-telemetry TiDB 構成項目がfalseに設定されている場合、テレメトリ収集は常に無効になり、このシステム変数は有効になりません。詳細はテレメトリーを参照してください。

tidb_enable_top_sql v5.4.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 Top SQL機能を有効にするかどうかを制御するために使用されます。

tidb_enable_tso_follower_proxy v5.3.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、TSO フォロワー プロキシ機能を有効にするために使用されます。値がOFFの場合、TiDB は PD リーダーから TSO のみを取得します。この機能を有効にすると、TiDB はすべての PD ノードにリクエストを均等に送信し、PD フォロワーを介して TSO リクエストを転送することで TSO を取得します。これにより、PD リーダーの CPU 負荷が軽減されます。
  • TSO フォロワー プロキシを有効にするシナリオ:
    • TSO 要求の負荷が高いため、PD リーダーの CPU がボトルネックに達し、TSO RPC 要求のレイテンシーが長くなります。
    • TiDB クラスターには多くの TiDB インスタンスがあり、値をtidb_tso_client_batch_max_wait_timeに増やしても、TSO RPC 要求の高レイテンシーの問題を軽減することはできません。

ノート:

PD リーダーの CPU 使用率のボトルネック以外の理由 (ネットワークの問題など) で、TSO RPCレイテンシーが増加したとします。この場合、TSO フォロワー プロキシを有効にすると、TiDB での実行レイテンシーが増加し、クラスターの QPS パフォーマンスに影響を与える可能性があります。

tidb_enable_vectorized_expression v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、ベクトル化された実行を有効にするかどうかを制御するために使用されます。

tidb_enable_window_function

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、ウィンドウ関数のサポートを有効にするかどうかを制御するために使用されます。ウィンドウ関数は予約済みのキーワードを使用する場合があることに注意してください。これにより、通常は実行できた SQL ステートメントが、TiDB のアップグレード後に解析できなくなる可能性があります。この場合、 tidb_enable_window_functionOFFを設定できます。

tidb_enforce_mpp v5.1 の新機能

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • オプティマイザーのコスト見積もりを無視し、TiFlash の MPP モードをクエリ実行に強制的に使用するかどうかを制御します。値のオプションは次のとおりです。
    • 0またはOFF 。これは、MPP モードが強制的に使用されないことを意味します (デフォルト)。
    • 1またはON 。これは、コスト見積もりが無視され、MPP モードが強制的に使用されることを意味します。この設定はtidb_allow_mpp=trueの場合にのみ有効であることに注意してください。

MPP は、TiFlash エンジンによって提供される分散コンピューティング フレームワークであり、ノード間のデータ交換を可能にし、高性能で高スループットの SQL アルゴリズムを提供します。 MPP モードの選択については、 MPP モードを選択するかどうかを制御しますを参照してください。

tidb_evolve_plan_baselines v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、ベースライン進化機能を有効にするかどうかを制御するために使用されます。詳細な導入または使用方法については、 ベースライン進化を参照してください。
  • クラスターに対するベースラインの進化の影響を軽減するには、次の構成を使用します。
    • 各実行計画の最大実行時間を制限するには、 tidb_evolve_plan_task_max_timeを設定します。デフォルト値は 600 秒です。
    • 時間枠を制限するには、 tidb_evolve_plan_task_start_timetidb_evolve_plan_task_end_timeを設定します。デフォルト値はそれぞれ00:00 +000023:59 +0000です。

tidb_evolve_plan_task_end_time v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 時間
  • デフォルト値: 23:59 +0000
  • この変数は、1 日のベースライン進化の終了時間を設定するために使用されます。

tidb_evolve_plan_task_max_time v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 600
  • 範囲: [-1, 9223372036854775807]
  • 単位: 秒
  • この変数は、ベースライン進化機能の各実行プランの最大実行時間を制限するために使用されます。

tidb_evolve_plan_task_start_time v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 時間
  • デフォルト値: 00:00 +0000
  • この変数は、1 日のベースライン進化の開始時刻を設定するために使用されます。

tidb_executor_concurrency v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 5
  • 範囲: [1, 256]
  • 単位: スレッド

この変数は、次の SQL 演算子の同時実行を (1 つの値に) 設定するために使用されます。

  • index lookup
  • index lookup join
  • hash join
  • hash aggregation ( partialおよびfinalフェーズ)
  • window
  • projection

tidb_executor_concurrencyには、管理を容易にするために、次の既存のシステム変数が全体として組み込まれています。

  • tidb_index_lookup_concurrency
  • tidb_index_lookup_join_concurrency
  • tidb_hash_join_concurrency
  • tidb_hashagg_partial_concurrency
  • tidb_hashagg_final_concurrency
  • tidb_projection_concurrency
  • tidb_window_concurrency

v5.0 以降、上記のシステム変数を個別に変更することができ (非推奨の警告が返されます)、変更は対応する単一の演算子にのみ影響します。その後、 tidb_executor_concurrencyを使用してオペレーターの同時実行数を変更しても、個別に変更されたオペレーターは影響を受けません。 tidb_executor_concurrencyを使用してすべてのオペレーターの同時実行数を変更する場合は、上記のすべての変数の値を-1に設定できます。

以前のバージョンから v5.0 にアップグレードされたシステムの場合、上記の変数の値を変更していない場合 (つまり、 tidb_hash_join_concurrencyの値が5で、残りの値が4であることを意味します)、以前に管理されていたオペレーターの同時実行は、これらの変数はtidb_executor_concurrencyによって自動的に管理されます。これらの変数のいずれかを変更した場合、対応する演算子の同時実行性は、変更された変数によって引き続き制御されます。

tidb_expensive_query_time_threshold

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: 整数
  • デフォルト値: 60
  • 範囲: [10, 2147483647]
  • 単位: 秒
  • この変数は、負荷の高いクエリ ログを出力するかどうかを決定するしきい値を設定するために使用されます。高価なクエリ ログと遅いクエリ ログの違いは次のとおりです。
    • ステートメントの実行後にスローログが出力されます。
    • 高価なクエリ ログには、実行時間がしきい値を超えて実行されているステートメントと、その関連情報が出力されます。

tidb_force_priority

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • デフォルト値: NO_PRIORITY
  • この変数は、TiDBサーバーで実行されるステートメントのデフォルトの優先度を変更するために使用されます。使用例は、OLAP クエリを実行している特定のユーザーが OLTP クエリを実行しているユーザーよりも低い優先度を受け取るようにすることです。
  • デフォルト値NO_PRIORITYは、ステートメントの優先度が強制的に変更されないことを意味します。その他のオプションは、昇順でLOW_PRIORITYDELAYED 、およびHIGH_PRIORITYです。

tidb_gc_concurrency v5.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • GC のロックを解決するステップのスレッド数を指定します。値-1は、TiDB が使用するガベージ コレクション スレッドの数を自動的に決定することを意味します。

tidb_gc_enable v5.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • TiKV のガベージ コレクションを有効にします。ガベージ コレクションを無効にすると、古いバージョンの行が削除されなくなるため、システム パフォーマンスが低下します。

tidb_gc_life_time v5.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 期間
  • デフォルト値: 10m0s
  • 範囲: [10m0s, 8760h0m0s]
  • Go Duration の形式で、GC ごとにデータが保持される制限時間。 GC が発生すると、現在の時刻からこの値を差し引いた値が安全なポイントになります。

ノート:

  • 更新が頻繁に行われるシナリオでは、 tidb_gc_life_timeの値が大きい (数日または数か月) と、次のような潜在的な問題が発生する可能性があります。
    • より大きなストレージの使用
    • 大量の履歴データは、特にselect count(*) from tなどの範囲クエリの場合、パフォーマンスにある程度影響を与える可能性があります。
  • tidb_gc_life_timeよりも長く実行されているトランザクションがある場合、GC 中に、このトランザクションが実行を継続するためにstart_ts以降のデータが保持されます。たとえば、 tidb_gc_life_timeが 10 分に設定されている場合、実行中のすべてのトランザクションの中で、最も早く開始されたトランザクションが 15 分間実行されており、GC は最近の 15 分間のデータを保持します。

tidb_gc_max_wait_time v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • デフォルト値: 86400
  • 範囲: [600, 31536000]
  • 単位: 秒
  • この変数は、アクティブなトランザクションが GC セーフ ポイントをブロックする最大時間を設定するために使用されます。デフォルトでは、GC の各時間中、セーフ ポイントは進行中のトランザクションの開始時間を超えません。アクティブなトランザクションの実行時間がこの変数値を超えない場合、実行時間がこの値を超えるまで GC セーフ ポイントはブロックされます。この変数値は整数型です。

tidb_gc_run_interval v5.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 期間
  • デフォルト値: 10m0s
  • 範囲: [10m0s, 8760h0m0s]
  • Go Duration の形式で GC 間隔を指定します (例: "1h30m"および"15m" )。

tidb_gc_scan_lock_mode v5.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: LEGACY
  • 可能な値: PHYSICALLEGACY
    • LEGACY : 従来のスキャン方法を使用します。つまり、Green GC を無効にします。
    • PHYSICAL : 物理スキャン方式を使用します。つまり、Green GC を有効にします。
  • この変数は、GC のロックの解決ステップでロックをスキャンする方法を指定します。変数値がLEGACYに設定されている場合、TiDB はリージョンごとにロックをスキャンします。値PHYSICALを使用すると、各 TiKV ノードがRaftレイヤーをバイパスし、データを直接スキャンできるようになります。これにより、 休止リージョン機能が有効な場合にすべてのリージョンをウェイクアップする GC の影響を効果的に軽減できるため、Resolve Locks の実行速度が向上します。ステップ。

tidb_general_log

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、すべての SQL ステートメントをログに記録するかどうかを設定するために使用されます。この機能はデフォルトで無効になっています。メンテナンス担当者が問題を特定するときにすべての SQL ステートメントをトレースする必要がある場合、この機能を有効にすることができます。

  • ログ内のこの機能のすべてのレコードを表示するには、TiDB 構成項目log.level"info"または"debug"に設定してから、 "GENERAL_LOG"文字列を照会する必要があります。次の情報が記録されます。

    • conn : 現在のセッションの ID。
    • user : 現在のセッション ユーザー。
    • schemaVersion : 現在のスキーマ バージョン。
    • txnStartTS : 現在のトランザクションが開始されるタイムスタンプ。
    • forUpdateTS : ペシミスティック トランザクション モードでは、 forUpdateTSは SQL ステートメントの現在のタイムスタンプです。悲観的トランザクションで書き込み競合が発生すると、TiDB は現在実行中の SQL ステートメントを再試行し、このタイムスタンプを更新します。 max-retry-countで再試行回数を設定できます。楽観的なトランザクション モデルでは、 forUpdateTStxnStartTSに相当します。
    • isReadConsistency : 現在のトランザクション分離レベルが Read Committed (RC) かどうかを示します。
    • current_db : 現在のデータベースの名前。
    • txn_mode : トランザクション モード。値のオプションはOPTIMISTICPESSIMISTICです。
    • sql : 現在のクエリに対応する SQL ステートメント。

tidb_guarantee_linearizability v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、非同期コミットのコミット TS の計算方法を制御します。デフォルト (値ON ) では、2 フェーズ コミットは PDサーバーから新しい TS を要求し、TS を使用して最終的なコミット TS を計算します。この状況では、すべての同時トランザクションに対して線形化可能性が保証されます。
  • この変数をOFFに設定すると、PDサーバーから TS をフェッチするプロセスがスキップされます。その代償として、因果的一貫性のみが保証されますが、線形化可能性は保証されません。詳細については、ブログ投稿Async Commit、TiDB 5.0 のトランザクション コミットのアクセラレータを参照してください。
  • 因果関係のみが必要なシナリオでは、この変数をOFFに設定してパフォーマンスを向上させることができます。

tidb_hash_exchange_with_new_collation

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、MPP ハッシュ パーティション交換演算子が、新しい照合順序が有効になっているクラスターで生成されるかどうかを制御します。 trueは演算子を生成することを意味し、 falseは生成しないことを意味します。
  • この変数は、TiDB の内部操作に使用されます。この変数を設定することはお勧めしません

tidb_hash_join_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 hash joinアルゴリズムの並行性を設定するために使用されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_hashagg_final_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、第finalフェーズで並行hash aggregationアルゴリズムを実行する並行性を設定するために使用されます。
  • 集約関数のパラメーターが明確でない場合、 HashAggは同時に実行され、それぞれ 2 つのフェーズ ( partialフェーズとfinalフェーズ) で実行されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_hashagg_partial_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、第partialフェーズで並行hash aggregationアルゴリズムを実行する並行性を設定するために使用されます。
  • 集約関数のパラメーターが明確でない場合、 HashAggは同時に実行され、それぞれ 2 つのフェーズ ( partialフェーズとfinalフェーズ) で実行されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_ignore_prepared_cache_close_stmt v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、プリペアドステートメントキャッシュを閉じるためのコマンドを無視するかどうかを設定するために使用されます。
  • この変数がONに設定されている場合、バイナリ プロトコルのCOM_STMT_CLOSEコマンドとテキスト プロトコルのDEALLOCATE PREPAREステートメントは無視されます。詳細については、 COM_STMT_CLOSEコマンドとDEALLOCATE PREPAREステートメントを無視するを参照してください。

tidb_index_join_batch_size

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 25000
  • 範囲: [1, 2147483647]
  • 単位: 行
  • この変数は、 index lookup join操作のバッチ サイズを設定するために使用されます。
  • OLAP シナリオでは大きな値を使用し、OLTP シナリオでは小さな値を使用します。

tidb_index_lookup_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 index lookup操作の並行性を設定するために使用されます。
  • OLAP シナリオでは大きな値を使用し、OLTP シナリオでは小さな値を使用します。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_index_lookup_join_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 index lookup joinアルゴリズムの並行性を設定するために使用されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_index_lookup_size

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 20000
  • 範囲: [1, 2147483647]
  • 単位: 行
  • この変数は、 index lookup操作のバッチ サイズを設定するために使用されます。
  • OLAP シナリオでは大きな値を使用し、OLTP シナリオでは小さな値を使用します。

tidb_index_serial_scan_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、 serial scan操作の並行性を設定するために使用されます。
  • OLAP シナリオでは大きな値を使用し、OLTP シナリオでは小さな値を使用します。

tidb_init_chunk_size

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 32
  • 範囲: [1, 32]
  • 単位: 行
  • この変数は、実行プロセス中に初期チャンクの行数を設定するために使用されます。

tidb_isolation_read_engines v4.0 の新機能

  • スコープ: セッション
  • デフォルト値: tikv,tiflash,tidb
  • この変数は、データの読み取り時に TiDB が使用できるストレージ エンジン リストを設定するために使用されます。

tidb_last_ddl_info v6.0.0の新機能

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • デフォルト値: ""
  • タイプ: 文字列
  • これは読み取り専用の変数です。現在のセッション内の最後の DDL 操作の情報を取得するために、TiDB で内部的に使用されます。
    • "query": 最後の DDL クエリ文字列。
    • "seq_num": 各 DDL 操作のシーケンス番号。 DDL操作の順序を識別するために使用されます。

tidb_last_query_info v4.0.14の新機能

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • デフォルト値: ""
  • これは読み取り専用の変数です。最後の DML ステートメントのトランザクション情報を照会するために、TiDB で内部的に使用されます。情報には次が含まれます。
    • txn_scope : globalまたはlocalのトランザクションのスコープ。
    • start_ts : トランザクションの開始タイムスタンプ。
    • for_update_ts : 以前に実行された DML ステートメントのfor_update_ts 。これは、テスト用に使用される TiDB の内部用語です。通常、この情報は無視できます。
    • error : エラー メッセージ (存在する場合)。

tidb_last_txn_info v4.0.9の新機能

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: 文字列
  • この変数は、現在のセッション内の最後のトランザクション情報を取得するために使用されます。これは読み取り専用の変数です。取引情報には以下が含まれます。
    • トランザクション スコープ。
    • TS の開始とコミット。
    • トランザクション コミット モード。2 フェーズ、1 フェーズ、または非同期コミットの可能性があります。
    • 非同期コミットまたは 1 フェーズ コミットから 2 フェーズ コミットへのトランザクション フォールバックの情報。
    • 発生したエラー。

tidb_log_file_max_days v5.3.0の新機能

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • この変数は、ログが現在の TiDB インスタンスに保持される最大日数を設定するために使用されます。その値のデフォルトは、構成ファイルのmax-days構成の値です。変数値の変更は、現在の TiDB インスタンスにのみ影響します。 TiDB の再始動後、変数値はリセットされ、構成値は影響を受けません。

tidb_low_resolution_tso

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、低精度 TSO 機能を有効にするかどうかを設定するために使用されます。この機能を有効にすると、新しいトランザクションは 2 秒ごとに更新されるタイムスタンプを使用してデータを読み取ります。
  • 適用可能な主なシナリオは、古いデータの読み取りが許容される場合に、小さな読み取り専用トランザクションの TSO を取得するオーバーヘッドを削減することです。

tidb_max_chunk_size

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1024
  • 範囲: [32, 2147483647]
  • 単位: 行
  • この変数は、実行プロセス中にチャンク内の最大行数を設定するために使用されます。大きすぎる値を設定すると、キャッシュの局所性の問題が発生する可能性があります。

tidb_max_delta_schema_count v2.1.18 および v3.0.5 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1024
  • 範囲: [100, 16384]
  • この変数は、キャッシュできるスキーマ バージョン (対応するバージョン用に変更されたテーブル ID) の最大数を設定するために使用されます。値の範囲は 100 ~ 16384 です。

tidb_mem_oom_action v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: CANCEL
  • 可能な値: CANCELLOG
  • 単一の SQL ステートメントがtidb_mem_quota_queryで指定されたメモリ クォータを超え、ディスクにスピルオーバーできない場合に、TiDB が実行する操作を指定します。詳細はTiDB メモリ制御を参照してください。
  • デフォルト値はCANCELですが、TiDB v4.0.2 以前のバージョンでは、デフォルト値はLOGです。
  • この設定は以前はtidb.tomlオプション ( oom-action ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_mem_quota_analyze v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • デフォルト値: 0
  • 単位: バイト
  • この変数は、TiDB 更新統計の最大メモリ使用量を制御します。このようなメモリ使用量は、手動でANALYZE TABLEを実行するときと、TiDB がバックグラウンドでタスクを自動的に分析するときに発生します。合計メモリ使用量がこのしきい値を超えると、ユーザーが実行したANALYZEが終了し、サンプリング レートを下げるか後で再試行するように促すエラー メッセージが報告されます。メモリのしきい値を超えたために TiDB バックグラウンドの自動タスクが終了し、使用されているサンプリング レートがデフォルト値よりも高い場合、TiDB はデフォルトのサンプリング レートを使用して更新を再試行します。この変数の値が負またはゼロの場合、TiDB は手動更新タスクと自動更新タスクの両方のメモリ使用量を制限しません。

ノート:

auto_analyzeは、TiDB スタートアップ構成ファイルでrun-auto-analyzeが有効になっている場合にのみ、TiDB クラスターでトリガーされます。

tidb_mem_quota_apply_cache v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 33554432 (32 MiB)
  • 範囲: [0, 9223372036854775807]
  • 単位: バイト
  • この変数は、 Apply演算子でローカル キャッシュのメモリ使用量のしきい値を設定するために使用されます。
  • Apply演算子のローカル キャッシュは、 Apply演算子の計算を高速化するために使用されます。変数を0に設定して、 Applyキャッシュ機能を無効にすることができます。

tidb_mem_quota_binding_cache v6.0.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 67108864
  • 範囲: [0, 2147483647]
  • 単位: バイト
  • この変数は、バインディングのキャッシュに使用されるメモリのしきい値を設定するために使用されます。
  • システムが過剰なバインドを作成またはキャプチャして、メモリ領域が過剰に使用された場合、TiDB はログに警告を返します。この場合、キャッシュは使用可能なすべてのバインディングを保持したり、保存するバインディングを決定したりできません。このため、クエリによってはバインディングが失われる場合があります。この問題に対処するには、この変数の値を大きくします。これにより、バインディングのキャッシュに使用されるメモリが増加します。このパラメーターを変更した後、 admin reload bindingsを実行してバインディングをリロードし、変更を検証する必要があります。

tidb_mem_quota_query

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1073741824 (1 GiB)
  • 範囲: [-1, 9223372036854775807]
  • 単位: バイト
  • この変数は、クエリのメモリ クォータのしきい値を設定するために使用されます。
  • 実行中のクエリのメモリ クォータがしきい値を超えた場合、TiDB はtidb_mem_oom_actionで指定された操作を実行します。
  • TiDB v6.1.0 より前のバージョンでは、これはセッション スコープ変数であり、初期値としてtidb.tomlからmem-quota-queryの値を使用します。 v6.1.0 から、 tidb_mem_quota_querySESSION | GLOBALスコープ変数です。

tidb_memory_usage_alarm_ratio

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: フロート
  • デフォルト値: 0.8
  • 範囲: [0, 1]
  • TiDB は、使用するメモリのパーセンテージが特定のしきい値を超えると、アラームをトリガーします。この機能の詳しい使用方法については、 memory-usage-alarm-ratioを参照してください。
  • memory-usage-alarm-ratioを構成することで、この変数の初期値を設定できます。

tidb_merge_join_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 1
  • この変数は、クエリが実行されるときのMergeJoin演算子の同時実行数を設定します。
  • この変数を設定することはお勧めしません。この変数の値を変更すると、データの正確性の問題が発生する可能性があります。

tidb_metric_query_range_duration v4.0 の新機能

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 60
  • 範囲: [10, 216000]
  • 単位: 秒
  • この変数は、照会時に生成される Prometheus ステートメントの範囲期間を設定するために使用されますMETRICS_SCHEMA

tidb_metric_query_step v4.0 の新機能

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 60
  • 範囲: [10, 216000]
  • 単位: 秒
  • この変数は、クエリ時に生成される Prometheus ステートメントのステップを設定するために使用されますMETRICS_SCHEMA

tidb_multi_statement_mode v4.0.11の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: OFF
  • 可能な値: OFFONWARN
  • この変数は、同じCOM_QUERYの呼び出しで複数のクエリを実行できるようにするかどうかを制御します。
  • SQL インジェクション攻撃の影響を軽減するために、TiDB はデフォルトで複数のクエリが同じCOM_QUERYの呼び出しで実行されるのを防ぐようになりました。この変数は、以前のバージョンの TiDB からのアップグレード パスの一部として使用することを目的としています。次の動作が適用されます。
クライアント設定tidb_multi_statement_mode複数のステートメントは許可されますか?
複数のステートメント = オンオフはい
複数のステートメント = オンオンはい
複数のステートメント = オン暖かいはい
複数のステートメント = オフオフいいえ
複数のステートメント = オフオンはい
複数のステートメント = オフ暖かいはい (+警告が返されます)

ノート:

デフォルト値のOFFだけが安全であると見なすことができます。アプリケーションが以前のバージョンの TiDB 用に特別に設計されている場合は、設定tidb_multi_statement_mode=ONが必要になることがあります。アプリケーションで複数ステートメントのサポートが必要な場合は、 tidb_multi_statement_modeオプションではなく、クライアント ライブラリによって提供される設定を使用することをお勧めします。例えば:

tidb_nontransactional_ignore_error v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: OFF
  • この変数は、非トランザクション DML ステートメントでエラーが発生したときに、すぐにエラーを返すかどうかを指定します。
  • 値がOFFに設定されている場合、非トランザクション DML ステートメントは最初のエラーですぐに停止し、エラーを返します。以下のバッチはすべてキャンセルされます。
  • 値がONに設定されている場合、バッチでエラーが発生すると、すべてのバッチが実行されるまで、次のバッチが実行され続けます。実行プロセス中に発生したすべてのエラーは、結果に一緒に返されます。

tidb_opt_agg_push_down

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、オプティマイザーが集約関数を Join、Projection、および UnionAll の前の位置に押し下げる最適化操作を実行するかどうかを設定するために使用されます。
  • クエリで集計操作が遅い場合は、変数の値を ON に設定できます。

tidb_opt_broadcast_cartesian_join

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1
  • 範囲: [0, 2]
  • ブロードキャストデカルト結合を許可するかどうかを示します。
  • 0は、ブロードキャストデカルト結合が許可されていないことを意味します。 1tidb_broadcast_join_threshold_countに基づいて許可されることを意味します。 2は、テーブル サイズがしきい値を超えても常に許可されることを意味します。
  • この変数は TiDB で内部的に使用され、その値を変更することはお勧めしません

tidb_opt_concurrency_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 3.0
  • TiDB で Golang ゴルーチンを開始するための CPU コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_copcpu_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 3.0
  • TiKV コプロセッサーが 1 行を処理するための CPU コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_correlation_exp_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1
  • 範囲: [0, 2147483647]
  • 列の順序相関に基づいて行数を見積もる方法がない場合は、ヒューリスティックな見積もり方法が使用されます。この変数は、ヒューリスティック メソッドの動作を制御するために使用されます。
    • 値が 0 の場合、ヒューリスティック手法は使用されません。
    • 値が 0 より大きい場合:
      • 値が大きいほど、ヒューリスティックな方法でインデックス スキャンが使用される可能性が高いことを示します。
      • 値が小さいほど、ヒューリスティックな方法でテーブル スキャンが使用される可能性が高いことを示します。

tidb_opt_correlation_threshold

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • デフォルト値: 0.9
  • 範囲: [0, 1]
  • この変数は、列順序相関を使用した行数の見積もりを有効にするかどうかを決定するしきい値を設定するために使用されます。現在の列とhandle列の順序相関がしきい値を超える場合、このメソッドが有効になります。

tidb_opt_cpu_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 3.0
  • TiDB が 1 行を処理するための CPU コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_desc_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 3.0
  • TiKV がディスクから 1 行を降順でスキャンするためのコストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_disk_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 1.5
  • TiDB が一時ディスクとの間で 1 バイトのデータを読み書きするための I/O コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_distinct_agg_push_down

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、オプティマイザが集約関数をdistinct ( select count(distinct a) from tなど) でコプロセッサにプッシュ ダウンする最適化操作を実行するかどうかを設定するために使用されます。
  • クエリでdistinct操作の集計関数が遅い場合は、変数値を1に設定できます。

次の例では、 tidb_opt_distinct_agg_push_downを有効にする前に、TiDB は TiKV からすべてのデータを読み取り、TiDB 側でdistinctを実行する必要があります。 tidb_opt_distinct_agg_push_downが有効になった後、 distinct aがコプロセッサーにプッシュダウンされ、 group by列のtest.t.aHashAgg_5に追加されます。

mysql> desc select count(distinct a) from test.t; +-------------------------+----------+-----------+---------------+------------------------------------------+ | id | estRows | task | access object | operator info | +-------------------------+----------+-----------+---------------+------------------------------------------+ | StreamAgg_6 | 1.00 | root | | funcs:count(distinct test.t.a)->Column#4 | | └─TableReader_10 | 10000.00 | root | | data:TableFullScan_9 | | └─TableFullScan_9 | 10000.00 | cop[tikv] | table:t | keep order:false, stats:pseudo | +-------------------------+----------+-----------+---------------+------------------------------------------+ 3 rows in set (0.01 sec) mysql> set session tidb_opt_distinct_agg_push_down = 1; Query OK, 0 rows affected (0.00 sec) mysql> desc select count(distinct a) from test.t; +---------------------------+----------+-----------+---------------+------------------------------------------+ | id | estRows | task | access object | operator info | +---------------------------+----------+-----------+---------------+------------------------------------------+ | HashAgg_8 | 1.00 | root | | funcs:count(distinct test.t.a)->Column#3 | | └─TableReader_9 | 1.00 | root | | data:HashAgg_5 | | └─HashAgg_5 | 1.00 | cop[tikv] | | group by:test.t.a, | | └─TableFullScan_7 | 10000.00 | cop[tikv] | table:t | keep order:false, stats:pseudo | +---------------------------+----------+-----------+---------------+------------------------------------------+ 4 rows in set (0.00 sec)

tidb_opt_enable_correlation_adjustment

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、オプティマイザーが列の順序の相関に基づいて行数を見積もるかどうかを制御するために使用されます

tidb_opt_insubq_to_join_and_agg

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: ブール値

  • デフォルト値: ON

  • この変数は、サブクエリを結合および集計に変換する最適化ルールを有効にするかどうかを設定するために使用されます。

  • たとえば、この最適化ルールを有効にすると、サブクエリは次のように変換されます。

    select * from t where t.a in (select aa from t1);

    サブクエリは、次のように結合に変換されます。

    select t.* from t, (select aa from t1 group by aa) tmp_t where t.a = tmp_t.aa;

    t1aa列のuniquenot nullに制限されている場合。次のステートメントは、集計なしで使用できます。

    select t.* from t, t1 where t.a=t1.aa;

tidb_opt_join_reorder_threshold

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • この変数は、TiDB 結合したテーブルの再配置 Reorder アルゴリズムの選択を制御するために使用されます。 結合したテーブルの再配置 Reorder に参加しているノードの数がこのしきい値より多い場合、TiDB は欲張りアルゴリズムを選択し、このしきい値より少ない場合、TiDB は動的計画法アルゴリズムを選択します。
  • 現在、OLTP クエリの場合、デフォルト値を維持することをお勧めします。 OLAP クエリの場合、変数値を 10 ~ 15 に設定して、OLAP シナリオでより適切な接続順序を取得することをお勧めします。

tidb_opt_limit_push_down_threshold

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 100
  • 範囲: [0, 2147483647]
  • この変数は、Limit または TopN オペレーターを TiKV にプッシュするかどうかを決定するしきい値を設定するために使用されます。
  • Limit または TopN オペレーターの値がこのしきい値以下の場合、これらのオペレーターは TiKV に強制的にプッシュ ダウンされます。この変数は、部分的に誤った推定が原因で、Limit または TopN オペレーターを TiKV にプッシュダウンできないという問題を解決します。

tidb_opt_memory_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 0.001
  • TiDB が 1 行を格納するためのメモリ コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_mpp_outer_join_fixed_build_side v5.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • 変数値がONの場合、左側の結合演算子は常にビルド側として内部テーブルを使用し、右側の結合演算子は常にビルド側として外部テーブルを使用します。値をOFFに設定すると、外部結合演算子はテーブルのいずれかの側を構築側として使用できます。

tidb_opt_network_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 1.0
  • ネットワークを介して 1 バイトのデータを転送するための正味コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_prefer_range_scan v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数の値をONに設定すると、オプティマイザは常に全表スキャンよりも範囲スキャンを優先します。
  • 次の例では、 tidb_opt_prefer_range_scanを有効にする前に、TiDB オプティマイザーがテーブル全体のスキャンを実行します。 tidb_opt_prefer_range_scanを有効にすると、オプティマイザーはインデックス レンジ スキャンを選択します。
explain select * from t where age=5; +-------------------------+------------+-----------+---------------+-------------------+ | id | estRows | task | access object | operator info | +-------------------------+------------+-----------+---------------+-------------------+ | TableReader_7 | 1048576.00 | root | | data:Selection_6 | | └─Selection_6 | 1048576.00 | cop[tikv] | | eq(test.t.age, 5) | | └─TableFullScan_5 | 1048576.00 | cop[tikv] | table:t | keep order:false | +-------------------------+------------+-----------+---------------+-------------------+ 3 rows in set (0.00 sec) set session tidb_opt_prefer_range_scan = 1; explain select * from t where age=5; +-------------------------------+------------+-----------+-----------------------------+-------------------------------+ | id | estRows | task | access object | operator info | +-------------------------------+------------+-----------+-----------------------------+-------------------------------+ | IndexLookUp_7 | 1048576.00 | root | | | | ├─IndexRangeScan_5(Build) | 1048576.00 | cop[tikv] | table:t, index:idx_age(age) | range:[5,5], keep order:false | | └─TableRowIDScan_6(Probe) | 1048576.00 | cop[tikv] | table:t | keep order:false | +-------------------------------+------------+-----------+-----------------------------+-------------------------------+ 3 rows in set (0.00 sec)

tidb_opt_projection_push_down v6.1.0の新機能

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: ブール値
  • デフォルト値: OFF
  • オプティマイザが TiKV または TiFlash コプロセッサにProjectionをプッシュできるようにするかどうかを指定します。

tidb_opt_scan_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 1.5
  • TiKV がディスクから 1 行のデータを昇順にスキャンするためのコストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_seek_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 20
  • TiDB が TiKV からデータを要求するための起動コストを示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_tiflash_concurrency_factor

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • 範囲: [0, 2147483647]
  • デフォルト値: 24.0
  • TiFlash 演算の同時実行数を示します。この変数はコストモデルで内部的に使用され、その値を変更することはお勧めしません

tidb_opt_write_row_id

  • スコープ: セッション
  • デフォルト値: OFF
  • この変数は、 INSERTREPLACE 、およびUPDATEステートメントが_tidb_rowid列で操作できるようにするかどうかを制御するために使用されます。この変数は、TiDB ツールを使用してデータをインポートする場合にのみ使用できます。

tidb_optimizer_selectivity_level

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 1
  • 値のオプション: 1および2 (非推奨)
  • この変数は、オプティマイザの推定ロジックの反復を制御します。この変数の値を変更すると、オプティマイザーの見積もりロジックが大幅に変更されます。現在、有効な値は1だけです。値を2に設定することはお勧めしません。

tidb_partition_prune_mode v5.1 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: static
  • 分割されたテーブルに対してdynamicモードを有効にするかどうかを指定します。動的プルーニング モードの詳細については、 分割されたテーブルの動的プルーニング モードを参照してください。

tidb_persist_analyze_options v5.4.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、 ANALYZE 構成の永続性機能を有効にするかどうかを制御します。

tidb_placement_mode v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: STRICT
  • 可能な値: STRICTIGNORE
  • この変数は、DDL ステートメントがSQL で指定された配置規則を無視するかどうかを制御します。変数値がIGNOREの場合、すべての配置ルール オプションが無視されます。
  • これは、無効な配置規則が割り当てられている場合でもテーブルを常に作成できるようにするために、論理ダンプ/復元ツールで使用することを目的としています。これは、mysqldump がすべてのダンプ ファイルの先頭にSET FOREIGN_KEY_CHECKS=0;を書き込む方法に似ています。

tidb_pprof_sql_cpu v4.0 の新機能

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 1]
  • この変数は、パフォーマンスの問題を特定してトラブルシューティングするために、プロファイル出力内の対応する SQL ステートメントをマークするかどうかを制御するために使用されます。

tidb_prepared_plan_cache_memory_guard_ratio v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • デフォルト値: 0.1
  • 範囲: [0, 1]
  • 準備されたプラン キャッシュがメモリ保護メカニズムをトリガーするしきい値。詳細については、 プリペアドプランキャッシュのメモリ管理を参照してください。
  • この設定は以前はtidb.tomlオプション ( prepared-plan-cache.memory-guard-ratio ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_prepared_plan_cache_size v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 100
  • 範囲: [1, 100000]
  • セッションでキャッシュできるプランの最大数。詳細については、 プリペアドプランキャッシュのメモリ管理を参照してください。
  • この設定は以前はtidb.tomlオプション ( prepared-plan-cache.capacity ) でしたが、TiDB v6.1.0 からシステム変数に変更されました。

tidb_projection_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [-1, 256]
  • 単位: スレッド
  • この変数は、 Projectionオペレーターの並行性を設定するために使用されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_query_log_max_len

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 4096 (4 KiB)
  • 範囲: [0, 1073741824]
  • 単位: バイト
  • SQL ステートメント出力の最大長。ステートメントの出力長がtidb_query_log_max_lenの値より大きい場合、ステートメントは切り捨てられて出力されます。
  • この設定は、以前はtidb.tomlオプション ( log.query-log-max-len ) としても使用できましたが、TiDB v6.1.0 以降ではシステム変数のみです。

tidb_rc_read_check_ts v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、タイムスタンプの取得を最適化するために使用されます。これは、読み取りと書き込みの競合がまれな読み取りコミット分離レベルのシナリオに適しています。この変数を有効にすると、グローバル タイムスタンプを取得する際のレイテンシーとコストを回避でき、トランザクション レベルの読み取りレイテンシーを最適化できます。
  • 読み取りと書き込みの競合が深刻な場合、この機能を有効にすると、グローバル タイムスタンプを取得するコストとレイテンシーが増加し、パフォーマンスが低下する可能性があります。詳細については、 読み取りコミット分離レベルを参照してください。

tidb_read_consistency v5.4.0の新機能

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • タイプ: 文字列
  • デフォルト値: strict
  • この変数は、自動コミット読み取りステートメントの読み取り一貫性を制御するために使用されます。
  • 変数値がweakに設定されている場合、read ステートメントで検出されたロックは直接スキップされ、読み取り実行が高速になる可能性があります。これは、弱い一貫性の読み取りモードです。ただし、トランザクションのセマンティクス (原子性など) と分散一貫性 (線形化可能性など) は保証されません。
  • 自動コミット読み取りが高速で弱い一貫性の読み取り結果を返す必要があるユーザー シナリオでは、弱い一貫性の読み取りモードを使用できます。

tidb_read_staleness v5.4.0の新機能

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [-2147483648, 0]
  • この変数は、TiDB が現在のセッションで読み取ることができる履歴データの時間範囲を設定するために使用されます。値を設定した後、TiDB はこの変数によって許可された範囲からできるだけ新しいタイムスタンプを選択し、その後のすべての読み取り操作はこのタイムスタンプに対して実行されます。たとえば、この変数の値が-5に設定されている場合、TiKV に対応する履歴バージョンのデータがあるという条件で、TiDB は 5 秒の時間範囲内でできるだけ新しいタイムスタンプを選択します。

tidb_record_plan_in_slow_log

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、スロー ログにスロー クエリの実行プランを含めるかどうかを制御するために使用されます。

tidb_redact_log

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、TiDB ログとスローログに記録される SQL ステートメントでユーザー情報を非表示にするかどうかを制御します。
  • 変数を1に設定すると、ユーザー情報は非表示になります。たとえば、実行された SQL ステートメントがinsert into t values (1,2)の場合、そのステートメントはログにinsert into t values (?,?)として記録されます。

tidb_regard_null_as_point v5.4.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、オプティマイザが null 等価を含むクエリ条件をインデックス アクセスのプレフィックス条件として使用できるかどうかを制御します。
  • この変数はデフォルトで有効になっています。有効にすると、オプティマイザーはアクセスするインデックス データの量を減らすことができるため、クエリの実行が高速化されます。たとえば、クエリに複数列インデックスindex(a, b)が含まれ、クエリ条件にa<=>null and b=1が含まれている場合、オプティマイザはインデックス アクセスのクエリ条件でa<=>nullb=1の両方を使用できます。変数が無効になっている場合、 a<=>null and b=1には NULL 等価条件が含まれているため、オプティマイザーはインデックス アクセスにb=1を使用しません。

tidb_remove_orderby_in_subquery v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • サブクエリでORDER BYの句を削除するかどうかを指定します。

tidb_replica_read v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: leader
  • 可能な値: leaderfollowerleader-and-followerclosest-replicas
  • この変数は、TiDB がデータを読み取る場所を制御するために使用されます。次の 3 つのオプションがあります。
    • リーダー: リーダー ノードからの読み取り専用
    • follower: follower ノードからの読み取り専用
    • リーダーとフォロワー: リーダーまたはフォロワー ノードから読み取ります
  • 詳細については、 フォロワーが読むを参照してください。

tidb_restricted_read_only v5.2.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • tidb_restricted_read_onlytidb_super_read_onlyは同じように動作します。ほとんどの場合、 tidb_super_read_onlyのみを使用する必要があります。
  • SUPERまたはSYSTEM_VARIABLES_ADMINの権限を持つユーザーは、この変数を変更できます。ただし、 セキュリティ強化モードが有効になっている場合、この変数の読み取りまたは変更には追加のRESTRICTED_VARIABLES_ADMIN権限が必要です。
  • 次の場合、 tidb_restricted_read_onlytidb_super_read_onlyに影響します。
    • tidb_restricted_read_onlyONを設定すると、 tidb_super_read_onlyONが更新されます。
    • tidb_restricted_read_onlyOFFに設定すると、 tidb_super_read_onlyは変更されません。
    • tidb_restricted_read_onlyONの場合、 tidb_super_read_onlyOFFに設定することはできません。
  • TiDB の DBaaS プロバイダーの場合、TiDB クラスターが別のデータベースのダウンストリーム データベースである場合、TiDB クラスターを読み取り専用にするには、 セキュリティ強化モードを有効にしてtidb_restricted_read_onlyを使用する必要がある場合があります。これにより、顧客はtidb_super_read_onlyを使用してクラスターを書き込み可能にすることができなくなります。これを実現するには、 セキュリティ強化モードを有効にし、 SYSTEM_VARIABLES_ADMINおよびRESTRICTED_VARIABLES_ADMIN権限を持つ管理者ユーザーを使用してtidb_restricted_read_onlyを制御し、データベース ユーザーがSUPER権限を持つ root ユーザーを使用してtidb_super_read_onlyのみを制御できるようにする必要があります。
  • この変数は、クラスター全体の読み取り専用ステータスを制御します。変数がONの場合、クラスター全体のすべての TiDB サーバーが読み取り専用モードになります。この場合、TiDB はSELECTUSE 、およびSHOWなどのデータを変更しないステートメントのみを実行します。 INSERTUPDATEなどの他のステートメントの場合、TiDB はこれらのステートメントを読み取り専用モードで実行することを拒否します。
  • この変数を使用して読み取り専用モードを有効にすると、クラスター全体が最終的に読み取り専用状態になります。 TiDB クラスターでこの変数の値を変更したが、変更が他の TiDB サーバーにまだ反映されていない場合、更新されていないTiDB サーバーはまだ読み取り専用モードではありません。
  • この変数が有効な場合、実行中の SQL ステートメントは影響を受けません。 TiDB は、実行されるSQL ステートメントの読み取り専用チェックのみを実行します。
  • この変数を有効にすると、TiDB はコミットされていないトランザクションを次の方法で処理します。
    • コミットされていない読み取り専用トランザクションの場合、通常どおりトランザクションをコミットできます。
    • 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
    • データが変更されたコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
  • 読み取り専用モードを有効にすると、すべてのユーザー ( SUPER特権を持つユーザーを含む) は、明示的にRESTRICTED_REPLICA_WRITER_ADMIN特権を付与されない限り、データを書き込む可能性のある SQL ステートメントを実行できません。

tidb_retry_limit

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 10
  • 範囲: [-1, 9223372036854775807]
  • この変数は、楽観的トランザクションの再試行の最大回数を設定するために使用されます。トランザクションで再試行可能なエラー (トランザクションの競合、非常に遅いトランザクション コミット、テーブル スキーマの変更など) が発生すると、このトランザクションはこの変数に従って再実行されます。 tidb_retry_limit0を設定すると、自動リトライが無効になることに注意してください。この変数は楽観的なトランザクションにのみ適用され、悲観的なトランザクションには適用されません。

tidb_row_format_version

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 2
  • 範囲: [1, 2]
  • テーブルに新しく保存されたデータの形式バージョンを制御します。 TiDB v4.0 では、新しいデータを保存するためにデフォルトで新しいストレージ行フォーマットバージョン2が使用されます。
  • 4.0.0 より前の TiDB バージョンから 4.0.0 にアップグレードする場合、フォーマット バージョンは変更されず、TiDB は引き続きバージョン1の古いフォーマットを使用してテーブルにデータを書き込みます。つまり、新しく作成されたクラスターのみが使用しますデフォルトでは新しいデータ形式です
  • この変数を変更しても、保存された古いデータには影響しませんが、この変数を変更した後に新しく書き込まれたデータにのみ、対応するバージョン形式が適用されることに注意してください。

tidb_scatter_region

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • デフォルトでは、TiDB で作成された新しいテーブルのリージョンは分割されます。この変数を有効にすると、新しく分割されたリージョンはCREATE TABLEステートメントの実行中にすぐに分散されます。これは、テーブルがバッチで作成された直後にデータをバッチで書き込む必要があるシナリオに適用されます。これは、新しく分割されたリージョンを事前に TiKV に分散させることができ、PD によってスケジュールされるのを待つ必要がないためです。バッチでのデータ書き込みの継続的な安定性を確保するために、 CREATE TABLEステートメントは、リージョンが正常に分散された後にのみ成功を返します。これにより、ステートメントの実行時間が、この変数を無効にした場合よりも数倍長くなります。
  • テーブルの作成時にSHARD_ROW_ID_BITSPRE_SPLIT_REGIONSが設定されている場合、テーブルの作成後に指定された数のリージョンが均等に分割されます。

tidb_shard_allocate_step v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 9223372036854775807
  • 範囲: [1, 9223372036854775807]
  • この変数は、 AUTO_RANDOMまたはSHARD_ROW_ID_BITS属性に割り当てられる連続 ID の最大数を制御します。通常、 AUTO_RANDOMの ID またはSHARD_ROW_ID_BITSの注釈付き行 ID は、1 つのトランザクションで増分的かつ連続的です。この変数を使用して、大規模なトランザクション シナリオでホットスポットの問題を解決できます。

tidb_skip_ascii_check v5.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、ASCII 検証をスキップするかどうかを設定するために使用されます。
  • ASCII 文字の検証はパフォーマンスに影響します。入力文字が有効な ASCII 文字であることを確認したら、変数値をONに設定できます。

tidb_skip_isolation_level_check

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • このスイッチを有効にした後、TiDB でサポートされていない分離レベルがtx_isolationに割り当てられた場合、エラーは報告されません。これにより、異なる分離レベルを設定する (ただし依存しない) アプリケーションとの互換性が向上します。
tidb> set tx_isolation='serializable'; ERROR 8048 (HY000): The isolation level 'serializable' is not supported. Set tidb_skip_isolation_level_check=1 to skip this error tidb> set tidb_skip_isolation_level_check=1; Query OK, 0 rows affected (0.00 sec) tidb> set tx_isolation='serializable'; Query OK, 0 rows affected, 1 warning (0.00 sec)

tidb_skip_utf8_check

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、UTF-8 検証をスキップするかどうかを設定するために使用されます。
  • UTF-8 文字の検証はパフォーマンスに影響します。入力文字が有効な UTF-8 文字であることを確認したら、変数値をONに設定できます。

ノート:

文字チェックがスキップされると、TiDB はアプリケーションによって書き込まれた不正な UTF-8 文字の検出に失敗し、 ANALYZEの実行時にデコード エラーが発生し、その他の未知のエンコーディングの問題が発生する可能性があります。アプリケーションが書き込まれた文字列の有効性を保証できない場合、文字チェックをスキップすることはお勧めしません。

tidb_slow_log_threshold

  • 範囲: グローバル
  • Persists to cluster: いいえ、接続している現在の TiDB インスタンスにのみ適用されます。
  • タイプ: 整数
  • デフォルト値: 300
  • 範囲: [-1, 9223372036854775807]
  • 単位: ミリ秒
  • この変数は、スローログの消費時間のしきい値を出力するために使用されます。クエリの消費時間がこの値よりも大きい場合、そのクエリはスロー ログと見なされ、そのログがスロー クエリ ログに出力されます。

tidb_max_tiflash_threads v6.1.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: -1
  • 範囲: [-1, 256]
  • この変数は、TiFlash がリクエストを実行する最大同時実行数を設定するために使用されます。デフォルト値は-1で、このシステム変数が無効であることを示します。値が0の場合、スレッドの最大数は TiFlash によって自動的に構成されます。

tidb_mpp_store_fail_ttl

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 期間
  • デフォルト値: 60s
  • 新しく開始された TiFlash はサービスを提供しません。クエリが失敗しないようにするために、TiDB はクエリを送信する tidb サーバーを新しく開始された TiFlash ノードに制限します。この変数は、新しく開始された TiFlash にリクエストが送信されない時間範囲を示します。

tidb_slow_query_file

  • スコープ: セッション
  • デフォルト値: ""
  • INFORMATION_SCHEMA.SLOW_QUERYがクエリされると、構成ファイルでslow-query-fileによって設定されたスロー クエリ ログ名のみが解析されます。デフォルトのスロー クエリ ログ名は「tidb-slow.log」です。他のログを解析するには、 tidb_slow_query_fileセッション変数を特定のファイル パスに設定し、 INFORMATION_SCHEMA.SLOW_QUERYをクエリして、設定されたファイル パスに基づいてスロー クエリ ログを解析します。

詳細については、 遅いクエリを特定するを参照してください。

tidb_snapshot

  • スコープ: セッション
  • デフォルト値: ""
  • この変数は、セッションによってデータが読み取られる時点を設定するために使用されます。たとえば、変数を「2017-11-11 20:20:20」または「400036290571534337」のような TSO 番号に設定すると、現在のセッションはこの時点のデータを読み取ります。

tidb_stats_cache_mem_quota v6.1.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 1099511627776]
  • この変数は、TiDB 統計キャッシュのメモリ クォータを設定します。

tidb_stats_load_pseudo_timeout v5.4.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、SQL 最適化の待機時間がタイムアウトに達したときの TiDB の動作を制御して、完全な列統計を同期的にロードします。デフォルト値OFFは、タイムアウト後に SQL の実行が失敗することを意味します。この変数をONに設定すると、SQL 最適化はタイムアウト後に疑似統計の使用に戻ります。

tidb_stats_load_sync_wait v5.4.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • 単位: ミリ秒
  • この変数は、同期ロード統計機能を有効にするかどうかを制御します。デフォルト値0は、機能が無効であることを意味します。この機能を有効にするには、この変数をタイムアウト (ミリ秒単位) に設定します。これは、SQL 最適化が完全な列統計を同期的にロードするまで最大で待機できる時間です。詳細については、 負荷統計を参照してください。

tidb_stmt_summary_history_size v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 24
  • 範囲: [0, 255]
  • この変数は、履歴容量ステートメント要約表を設定するために使用されます。

tidb_stmt_summary_internal_query v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、TiDB の SQL 情報をステートメント要約表に含めるかどうかを制御するために使用されます。

tidb_stmt_summary_max_sql_length v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 4096
  • 範囲: [0, 2147483647]
  • この変数は、 ステートメント要約表の SQL 文字列の長さを制御するために使用されます。

tidb_stmt_summary_max_stmt_count v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 3000
  • 範囲: [1, 32767]
  • この変数は、メモリに格納されるステートメントの最大数を設定するために使用されステートメント要約表

tidb_stmt_summary_refresh_interval v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 1800
  • 範囲: [1, 2147483647]
  • 単位: 秒
  • この変数は、リフレッシュ時間をステートメント要約表に設定するために使用されます。

tidb_store_limit v3.0.4 および v4.0 の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 0
  • 範囲: [0, 9223372036854775807]
  • この変数は、TiDB が同時に TiKV に送信できるリクエストの最大数を制限するために使用されます。 0 は無制限を意味します。

tidb_streamagg_concurrency

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: 1
  • この変数は、クエリが実行されるときのStreamAgg演算子の同時実行を設定します。
  • この変数を設定することはお勧めしません。変数値を変更すると、データの正確性の問題が発生する可能性があります。

tidb_super_read_only v5.3.1の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • tidb_super_read_onlyは、MySQL 変数super_read_onlyの代わりとして実装されることを目的としています。ただし、TiDB は分散データベースであるため、 tidb_super_read_onlyは実行直後にデータベースを読み取り専用にするのではなく、最終的にデータベースを読み取り専用にします。
  • SUPERまたはSYSTEM_VARIABLES_ADMINの権限を持つユーザーは、この変数を変更できます。
  • この変数は、クラスター全体の読み取り専用ステータスを制御します。変数がONの場合、クラスター全体のすべての TiDB サーバーが読み取り専用モードになります。この場合、TiDB はSELECTUSE 、およびSHOWなどのデータを変更しないステートメントのみを実行します。 INSERTUPDATEなどの他のステートメントの場合、TiDB はこれらのステートメントを読み取り専用モードで実行することを拒否します。
  • この変数を使用して読み取り専用モードを有効にすると、クラスター全体が最終的に読み取り専用状態になります。 TiDB クラスターでこの変数の値を変更したが、変更が他の TiDB サーバーにまだ反映されていない場合、更新されていないTiDB サーバーはまだ読み取り専用モードではありません。
  • この変数が有効な場合、実行中の SQL ステートメントは影響を受けません。 TiDB は、実行されるSQL ステートメントの読み取り専用チェックのみを実行します。
  • この変数を有効にすると、TiDB はコミットされていないトランザクションを次の方法で処理します。
    • コミットされていない読み取り専用トランザクションの場合、通常どおりトランザクションをコミットできます。
    • 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
    • データが変更されたコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
  • 読み取り専用モードを有効にすると、すべてのユーザー ( SUPER特権を持つユーザーを含む) は、明示的にRESTRICTED_REPLICA_WRITER_ADMIN特権を付与されない限り、データを書き込む可能性のある SQL ステートメントを実行できません。
  • システム変数tidb_restricted_read_onlyONに設定されている場合、 tidb_super_read_onlytidb_restricted_read_onlyの影響を受ける場合があります。詳細な影響については、 tidb_restricted_read_onlyの説明を参照してください。

tidb_sysdate_is_now v6.0.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: OFF
  • この変数は、 SYSDATEの機能をNOWの機能に置き換えることができるかどうかを制御するために使用されます。この構成項目は、MySQL オプションsysdate-is-nowと同じ効果があります。

tidb_table_cache_lease v6.0.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 3
  • 範囲: [1, 10]
  • 単位: 秒
  • この変数は、デフォルト値3でリース時間をキャッシュされたテーブルに制御するために使用されます。この変数の値は、キャッシュされたテーブルの変更に影響します。キャッシュされたテーブルに変更が加えられた後、最長の待機時間はtidb_table_cache_lease秒になる場合があります。テーブルが読み取り専用であるか、高い書き込みレイテンシーを許容できる場合は、この変数の値を増やして、テーブルをキャッシュする有効時間を増やし、リース更新の頻度を減らすことができます。

tidb_tmp_table_max_size v5.3.0の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 67108864
  • 範囲: [1048576, 137438953472]
  • 単位: バイト
  • この変数は、単一の一時テーブルの最大サイズを設定するために使用されます。この変数の値より大きいサイズの一時テーブルは、エラーの原因になります。

tidb_top_sql_max_meta_count v6.0.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 5000
  • 範囲: [1, 10000]
  • この変数は、1 分間にTop SQLずつ収集される SQL ステートメント タイプの最大数を制御するために使用されます。

tidb_top_sql_max_time_series_count v6.0.0の新機能

ノート:

現在、TiDB ダッシュボードのTop SQLページには、負荷に最も貢献している上位 5 種類の SQL クエリのみが表示されますが、これはtidb_top_sql_max_time_series_countの構成とは無関係です。

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 100
  • 範囲: [1, 5000]
  • この変数は、負荷に最も寄与する SQL ステートメント (つまり、上位 N 個) をTop SQL分あたり 1 つずつ記録できる数を制御するために使用されます。

tidb_track_aggregate_memory_usage

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、TiDB が集計関数のメモリ使用量を追跡するかどうかを制御します。

tidb_tso_client_batch_max_wait_time v5.3.0の新機能

  • 範囲: グローバル
  • クラスターに永続化: はい
  • タイプ: フロート
  • デフォルト値: 0
  • 範囲: [0, 10]
  • 範囲: [0, 10]
  • 単位: ミリ秒
  • この変数は、TiDB が PD から TSO を要求するときのバッチ操作の最大待機時間を設定するために使用されます。デフォルト値は0で、余分な待ち時間がないことを意味します。
  • PD から TSO リクエストを毎回取得する際、TiDB が使用する PD Client は、同時に受信した TSO リクエストをできるだけ多く収集します。次に、PD クライアントは、収集されたリクエストをバッチで 1 つの RPC リクエストにマージし、リクエストを PD に送信します。これにより、PD への負担が軽減されます。
  • この変数を0より大きい値に設定した後、TiDB は、各バッチ マージが終了する前に、この値の最大期間待機します。これは、より多くの TSO 要求を収集し、バッチ操作の効果を向上させるためです。
  • この変数の値を増やすシナリオ:
    • TSO 要求の負荷が高いため、PD リーダーの CPU がボトルネックに達し、TSO RPC 要求のレイテンシーが長くなります。
    • クラスター内の TiDB インスタンスの数は多くありませんが、すべての TiDB インスタンスは高い同時実行性を維持しています。
  • この変数はできるだけ小さい値に設定することをお勧めします。

ノート:

PD リーダーの CPU 使用率のボトルネック以外の理由 (ネットワークの問題など) で、TSO RPCレイテンシーが増加したとします。この場合、値tidb_tso_client_batch_max_wait_timeを増やすと、TiDB での実行レイテンシーが増加し、クラスターの QPS パフォーマンスに影響を与える可能性があります。

tidb_txn_assertion_level v6.0.0の新機能

  • スコープ: セッション |グローバル

  • クラスターに永続化: はい

  • タイプ: 列挙

  • デフォルト値: FAST

  • 可能な値: OFFFASTSTRICT

  • この変数は、アサーション レベルを制御するために使用されます。アサーションは、データとインデックス間の整合性チェックであり、トランザクションのコミット プロセスで、書き込まれているキーが存在するかどうかをチェックします。詳細については、 データとインデックス間の不一致のトラブルシューティングを参照してください。

    • OFF : このチェックを無効にします。
    • FAST : ほとんどのチェック項目を有効にしますが、パフォーマンスにはほとんど影響しません。
    • STRICT : すべてのチェック項目を有効にします。システムのワークロードが高い場合、悲観的なトランザクション パフォーマンスにわずかな影響があります。
  • v6.0.0 以降のバージョンの新しいクラスターの場合、デフォルト値はFASTです。 v6.0.0 より前のバージョンからアップグレードする既存のクラスターの場合、デフォルト値はOFFです。

tidb_txn_mode

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: pessimistic
  • 可能な値: pessimisticoptimistic
  • この変数は、トランザクション モードを設定するために使用されます。 TiDB 3.0 は悲観的トランザクションをサポートしています。 TiDB 3.0.8 以降、デフォルトでペシミスティック トランザクション モードが有効になっています。
  • TiDB を v3.0.7 以前のバージョンから v3.0.8 以降のバージョンにアップグレードしても、デフォルトのトランザクション モードは変更されません。新しく作成されたクラスタだけがデフォルトでペシミスティック トランザクション モードを使用します
  • この変数が「optimistic」または「」に設定されている場合、TiDB は楽観的なトランザクション モードを使用します。

tidb_use_plan_baselines v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、実行計画バインディング機能を有効にするかどうかを制御するために使用されます。これはデフォルトで有効になっており、値OFFを割り当てることで無効にすることができます。実行計画バインディングの使用については、 実行計画バインディングを参照してください。

tidb_wait_split_region_finish

  • スコープ: セッション
  • タイプ: ブール値
  • デフォルト値: ON
  • 通常、PD のスケジューリングと TiKV の負荷によって決定されるリージョンの分散には長い時間がかかります。この変数は、 SPLIT REGIONステートメントが実行されているときに、すべてのリージョンが完全に分散された後に結果をクライアントに返すかどうかを設定するために使用されます。
    • ONを指定すると、すべてのリージョンが分散されるまでSPLIT REGIONSステートメントが待機する必要があります。
    • OFFは、すべての領域の分散を終了する前にSPLIT REGIONSステートメントを返すことを許可します。
  • リージョンを分散すると、分散されているリージョンの書き込みおよび読み取りパフォーマンスが影響を受ける可能性があることに注意してください。バッチ書き込みまたはデータ インポートのシナリオでは、リージョンの分散が完了した後にデータをインポートすることをお勧めします。

tidb_wait_split_region_timeout

  • スコープ: セッション
  • タイプ: 整数
  • デフォルト値: 300
  • 範囲: [1, 2147483647]
  • 単位: 秒
  • この変数は、 SPLIT REGIONステートメントを実行するためのタイムアウトを設定するために使用されます。指定された時間値内にステートメントが完全に実行されない場合、タイムアウト エラーが返されます。

tidb_window_concurrency v4.0 の新機能

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: -1
  • 範囲: [1, 256]
  • 単位: スレッド
  • この変数は、ウィンドウ オペレーターの同時実行度を設定するために使用されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

タイムゾーン

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • デフォルト値: SYSTEM
  • この変数は、現在のタイム ゾーンを返します。値は、「-8:00」などのオフセットまたは名前付きゾーン「America/Los_Angeles」として指定できます。
  • SYSTEMは、タイム ゾーンがシステム ホストと同じであることを意味します。これは、変数system_time_zoneを介して利用できます。

タイムスタンプ

  • スコープ: セッション
  • タイプ: フロート
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • この変数の空でないNOW() CURRENT_TIMESTAMP()およびその他の関数のタイムスタンプとして使用される UNIX エポックを示します。この変数は、データの復元または複製で使用される場合があります。

トランザクション分離

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 列挙
  • デフォルト値: REPEATABLE-READ
  • 可能な値: READ-UNCOMMITTEDREAD-COMMITTEDREPEATABLE-READSERIALIZABLE
  • この変数は、トランザクションの分離を設定します。 TiDB は MySQL との互換性のためにREPEATABLE-READをアドバタイズしますが、実際の分離レベルはスナップショット分離です。詳細については、 トランザクション分離レベルを参照してください。

tx_isolation

この変数はtransaction_isolationのエイリアスです。

tx_isolation_one_shot

ノート:

この変数は、TiDB で内部的に使用されます。使用することは想定されていません。

内部的に、TiDB パーサーはSET TRANSACTION ISOLATION LEVEL [READ COMMITTED| REPEATABLE READ | ...]ステートメントをSET @@SESSION.TX_ISOLATION_ONE_SHOT = [READ COMMITTED| REPEATABLE READ | ...]に変換します。

tx_read_ts

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • デフォルト値: 0
  • ステイル読み取りのシナリオでは、このセッション変数を使用して、安定した読み取りのタイムスタンプ値を記録します。
  • この変数は、TiDB の内部操作に使用されます。この変数を設定することはお勧めしません

txn_scope

  • スコープ: セッション
  • クラスターに永続化: いいえ
  • デフォルト値: global
  • 値のオプション: globalおよびlocal
  • この変数は、現在のセッション トランザクションがグローバル トランザクションかローカル トランザクションかを設定するために使用されます。
  • この変数は、TiDB の内部操作に使用されます。この変数を設定することはお勧めしません

バージョン

  • スコープ: なし
  • デフォルト値: 5.7.25-TiDB- (tidb バージョン)
  • この変数は、MySQL のバージョンに続いて TiDB のバージョンを返します。たとえば、「5.7.25-TiDB-v4.0.0-beta.2-716-g25e003253」です。

version_comment

  • スコープ: なし
  • デフォルト値: (文字列)
  • この変数は、TiDB のバージョンに関する追加の詳細を返します。たとえば、「TiDB Server (Apache License 2.0) Community Edition、 MySQL 5.7互換」などです。

version_compile_machine

  • スコープ: なし
  • デフォルト値: (文字列)
  • この変数は、TiDB が実行されている CPUアーキテクチャの名前を返します。

version_compile_os

  • スコープ: なし
  • デフォルト値: (文字列)
  • この変数は、TiDB が実行されている OS の名前を返します。

wait_timeout

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: 整数
  • デフォルト値: 28800
  • 範囲: [0, 31536000]
  • 単位: 秒
  • この変数は、ユーザー セッションのアイドル タイムアウトを制御します。ゼロ値は無制限を意味します。

warning_count

  • スコープ: セッション
  • デフォルト値: 0
  • この読み取り専用変数は、以前に実行されたステートメントで発生した警告の数を示します。

windowing_use_high_precision

  • スコープ: セッション |グローバル
  • クラスターに永続化: はい
  • タイプ: ブール値
  • デフォルト値: ON
  • この変数は、ウィンドウ関数を計算するときに高精度モードを使用するかどうかを制御します。

このページは役に立ちましたか?