システム変数
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 コアの数までになります。
- バイトの場合、安全な値は通常、システムメモリの量よりも小さくなります。
- 時間については、単位が秒またはミリ秒になる可能性があることに注意してください。
同じ単位を使用する変数は、同じリソース セットを競合する可能性があります。
v7.4.0 以降では、 SET_VARを使用して、ステートメントの実行中に一部のSESSION変数の値を一時的に変更できます。ステートメントの実行後、現在のセッションのシステム変数の値は自動的に元の値に戻ります。このヒントを使用して、オプティマイザーとエグゼキューターに関連する一部のシステム変数を変更できます。このドキュメントの変数にはApplies to hint SET_VAR設定があり、 YesまたはNoに構成できます。
Applies to hint SET_VAR: Yesに設定されている変数の場合、SET_VARヒントを使用して、ステートメントの実行中に現在のセッションのシステム変数の値を変更できます。Applies to hint SET_VAR: Noに設定された変数の場合、ステートメントの実行中にSET_VARヒントを使用して現在のセッションのシステム変数の値を変更することはできません。
SET_VARヒントの詳細については、 SET_VAR参照してください。
変数参照
allow_auto_random_explicit_insert v4.0.3 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF INSERTステートメントでAUTO_RANDOM属性を持つ列の値を明示的に指定できるようにするかどうかを決定します。
authentication_ldap_sasl_auth_method_name v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
SCRAM-SHA-1 - 可能な値:
SCRAM-SHA-1、SCRAM-SHA-256、およびGSSAPI。 - LDAP SASL 認証の場合、この変数は認証方法名を指定します。
authentication_ldap_sasl_bind_base_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は検索ツリー内の検索範囲を制限します。1
AS ...なしでユーザーが作成された場合、TiDB はユーザー名に従って LDAPサーバーでdnを自動的に検索します。
authentication_ldap_sasl_bind_root_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用される
dn指定します。
authentication_ldap_sasl_bind_root_pwdバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用されるパスワードを指定します。
authentication_ldap_sasl_ca_path v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は StartTLS 接続の証明機関ファイルの絶対パスを指定します。
authentication_ldap_sasl_init_pool_size v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
10 - 範囲:
[1, 32767] - LDAP SASL 認証の場合、この変数は LDAPサーバーへの接続プール内の初期接続を指定します。
authentication_ldap_sasl_max_pool_size v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1000 - 範囲:
[1, 32767] - LDAP SASL 認証の場合、この変数は LDAPサーバーへの接続プール内の最大接続数を指定します。
authentication_ldap_sasl_server_hostバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は LDAPサーバーのホスト名または IP アドレスを指定します。
authentication_ldap_sasl_server_portバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
389 - 範囲:
[1, 65535] - LDAP SASL 認証の場合、この変数は LDAPサーバーの TCP/IP ポート番号を指定します。
authentication_ldap_sasl_tls v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - LDAP SASL 認証の場合、この変数はプラグインによる LDAPサーバーへの接続が StartTLS で保護されるかどうかを制御します。
authentication_ldap_simple_auth_method_name v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
SIMPLE - 可能な値:
SIMPLE。 - LDAP シンプル認証の場合、この変数は認証方法名を指定します。サポートされる値は
SIMPLEです。
authentication_ldap_simple_bind_base_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP シンプル認証の場合、この変数は検索ツリー内の検索範囲を制限します。1
AS ...なしでユーザーが作成された場合、TiDB はユーザー名に従って LDAPサーバーでdnを自動的に検索します。
authentication_ldap_simple_bind_root_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用される
dn指定します。
authentication_ldap_simple_bind_root_pwdバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用されるパスワードを指定します。
authentication_ldap_simple_ca_path v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は StartTLS 接続の証明機関ファイルの絶対パスを指定します。
authentication_ldap_simple_init_pool_size v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
10 - 範囲:
[1, 32767] - LDAP 簡易認証の場合、この変数は LDAPサーバーへの接続プール内の初期接続を指定します。
authentication_ldap_simple_max_pool_size v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1000 - 範囲:
[1, 32767] - LDAP シンプル認証の場合、この変数は LDAPサーバーへの接続プール内の最大接続数を指定します。
authentication_ldap_simple_server_hostバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は LDAPサーバーのホスト名または IP アドレスを指定します。
authentication_ldap_simple_server_portバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
389 - 範囲:
[1, 65535] - LDAP 簡易認証の場合、この変数は LDAPサーバーの TCP/IP ポート番号を指定します。
authentication_ldap_simple_tls v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - LDAP 簡易認証の場合、この変数はプラグインによる LDAPサーバーへの接続が StartTLS で保護されるかどうかを制御します。
自動増分
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 65535] - 列に割り当てる
AUTO_INCREMENT値のステップ サイズとAUTO_RANDOMID の割り当てルールを制御します。auto_increment_offsetと組み合わせて使用されることが多いです。
自動増分オフセット
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 65535] - 列に割り当てられる
AUTO_INCREMENT値の初期オフセットと、AUTO_RANDOMID の割り当てルールを制御します。この設定は、多くの場合、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)
自動コミット
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - 明示的なトランザクションでない場合にステートメントを自動的にコミットするかどうかを制御します。詳細についてはトランザクションの概要参照してください。
ブロック暗号化モード
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
aes-128-ecb aes-256-cbcaes-192-ecbaes-192-cbcaes-128-cbcaes-128-ecbaes-256-ecbaes-128-ofbaes-192-ofbaes-256-ofbaes-128-cfbaes-192-cfbaes-256-cfb- この変数は、組み込み関数
AES_ENCRYPT()およびAES_DECRYPT()の暗号化モードを設定します。
文字セットクライアント
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4 - クライアントから送信されるデータの文字セット。TiDB での文字セットと照合順序の使用の詳細については、 文字セットと照合順序参照してください。必要に応じて
SET NAMES使用して文字セットを変更することをお勧めします。
文字セット接続
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4 - 指定された文字セットを持たない文字列リテラルの文字セット。
文字セットデータベース
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4 - この変数は、使用中のデフォルト データベースの文字セットを示します。この変数を設定することは推奨されません。新しいデフォルト データベースが選択されると、サーバーは変数値を変更します。
文字セットの結果
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4 - データがクライアントに送信されるときに使用される文字セット。
文字セットサーバー
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4 - サーバーのデフォルトの文字セット。
照合接続
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4_bin - この変数は、現在の接続で使用されている照合順序を示します。これは、MySQL 変数
collation_connectionと一致します。
照合データベース
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4_bin - この変数は、使用中のデータベースの照合順序の照合順序を示します。この変数を設定することは推奨されません。新しいデータベースが選択されると、TiDB はこの変数値を変更します。
照合サーバー
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
utf8mb4_bin - データベースの作成時に使用されるデフォルトの照合照合順序。
cte_max_recursion_depth
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
1000 - 範囲:
[0, 4294967295] - 共通テーブル式の最大再帰深度を制御します。
データディレクトリ
注記:
この変数はTiDB Cloudサーバーレスではサポートされていません。
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値:コンポーネントと展開方法によって異なります。
/tmp/tidb:--storeに"unistore"設定した場合、または--store設定しない場合。${pd-ip}:${pd-port}: Kubernetes デプロイメント用のTiUPおよびTiDB Operatorのデフォルトのstorageエンジンである TiKV を使用する場合。
- この変数は、データが保存される場所を示します。この場所は、ローカル パス
/tmp/tidbにすることも、データが TiKV に保存されている場合は PDサーバーを指すこともできます${pd-ip}:${pd-port}という形式の値は、起動時に TiDB が接続する PDサーバーを示します。
ddl_slow_threshold
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
300 - 範囲:
[0, 2147483647] - 単位: ミリ秒
- 実行時間がしきい値を超える DDL 操作をログに記録します。
デフォルト認証プラグイン
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
mysql_native_password - 可能な
caching_sha2_password:mysql_native_passwordauthentication_ldap_simpletidb_sm3_passwordtidb_auth_tokenauthentication_ldap_sasl - この変数は、サーバーとクライアントの接続が確立されるときにサーバーが通知する認証方法を設定します。
tidb_sm3_password方法で認証するには、 TiDB-JDBC使用して TiDB に接続できます。
この変数の可能な値の詳細については、 認証プラグインのステータス参照してください。
default_collation_for_utf8mb4 v7.4.0 の新機能
- 範囲: グローバル | セッション
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
utf8mb4_bin utf8mb4_0900_ai_ciutf8mb4_general_ciオプション:utf8mb4_bin- この変数は、
utf8mb4文字セットのデフォルト照合順序設定するために使用されます。これは、次のステートメントの動作に影響します。SHOW COLLATIONとSHOW CHARACTER SETステートメントに表示されるデフォルトの照合照合順序。CREATE TABLEおよびALTER TABLEステートメントに、照合順序を指定せずにテーブルまたは列に対してCHARACTER SET utf8mb4句が含まれている場合、この変数で指定された照合順序順序が使用されます。これは、CHARACTER SET句が使用されていない場合の動作には影響しません。CREATE DATABASEとALTER DATABASEステートメントに照合順序を指定せずにCHARACTER SET utf8mb4の句が含まれている場合、この変数で指定された照合順序が使用されます。これは、CHARACTER SET番目の句が使用されていない場合の動作には影響しません。COLLATE句が使用されていない場合、_utf8mb4'string'形式のすべてのリテラル文字列はこの変数で指定された照合順序を使用します。
default_password_lifetime v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 65535] - 自動パスワード有効期限のグローバル ポリシーを設定します。デフォルト値
0は、パスワードが期限切れにならないことを示します。このシステム変数が正の整数Nに設定されている場合、パスワードの有効期間はN日間であり、N日以内にパスワードを変更する必要があります。
デフォルトの週の形式
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 7] WEEK()関数で使用される週の形式を設定します。
disconnect_on_expired_password v6.5.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は読み取り専用です。パスワードの有効期限が切れたときに TiDB がクライアント接続を切断するかどうかを示します。変数が
ONに設定されている場合、パスワードの有効期限が切れるとクライアント接続が切断されます。変数がOFFに設定されている場合、クライアント接続は「サンドボックス モード」に制限され、ユーザーはパスワード リセット操作のみを実行できます。
- 期限切れのパスワードに対するクライアント接続の動作を変更する必要がある場合は、構成ファイル内の
security.disconnect-on-expired-password構成項目を変更します。
エラー数
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - メッセージを生成した最後のステートメントから発生したエラーの数を示す読み取り専用変数。
外部キーチェック
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v6.6.0 より前では、デフォルト値は
OFFです。v6.6.0 以降では、デフォルト値はONです。 - この変数は、外部キー制約チェックを有効にするかどうかを制御します。
グループ連結最大長
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1024 - 範囲:
[4, 18446744073709551615] GROUP_CONCAT()関数内の項目の最大バッファ サイズ。
オープンSSL
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
DISABLED - MySQL 互換性のための読み取り専用変数。サーバーで TLS が有効になっている場合は、サーバーによって
YESに設定されます。
SSLがある
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
DISABLED - MySQL 互換性のための読み取り専用変数。サーバーで TLS が有効になっている場合は、サーバーによって
YESに設定されます。
ホスト名
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: (システムホスト名)
- 読み取り専用変数としての TiDBサーバーのホスト名。
アイデンティティv5.3.0 の新機能
この変数はlast_insert_idの別名です。
初期化接続
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
init_connect機能により、TiDBサーバーに初めて接続するときに SQL ステートメントが自動的に実行されます。CONNECTION_ADMINまたはSUPER権限がある場合、このinit_connectステートメントは実行されません。init_connectステートメントでエラーが発生した場合、ユーザー接続は終了します。
innodb_lock_wait_timeout
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
50 - 範囲:
[1, 3600] - 単位: 秒
- 悲観的トランザクションのロック待機タイムアウト (デフォルト)。
インタラクティブタイムアウト
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
28800 - 範囲:
[1, 31536000] - 単位: 秒
- この変数は、対話型ユーザー セッションのアイドル タイムアウトを表します。対話型ユーザー セッションとは、
CLIENT_INTERACTIVEオプション (MySQL Shell や MySQL Client など) を使用してmysql_real_connect()API を呼び出すことによって確立されたセッションを指します。この変数は MySQL と完全に互換性があります。
最後の挿入ID
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 18446744073709551615] - この変数は、挿入ステートメントによって生成された最後の
AUTO_INCREMENTまたはAUTO_RANDOM値を返します。 last_insert_idの値は、関数LAST_INSERT_ID()によって返される値と同じです。
last_plan_from_binding v4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、前のステートメントで使用された実行計画がプランバインディングの影響を受けたかどうかを示すために使用されます。
last_plan_from_cache v4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、前の
executeステートメントで使用された実行プランがプラン キャッシュから直接取得されたかどうかを示すために使用されます。
last_sql_use_alloc v6.4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値:
OFF - この変数は読み取り専用です。前のステートメントがキャッシュされたチャンク オブジェクト (チャンク割り当て) を使用するかどうかを示すために使用されます。
ライセンス
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値:
Apache License 2.0 - この変数は、TiDBサーバーインストールのライセンスを示します。
ログビン
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数はTiDBBinlogが使用されているかどうかを示します。
max_allowed_packet v6.1.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
67108864 - 範囲:
[1024, 1073741824] - 値は 1024 の整数倍である必要があります。値が 1024 で割り切れない場合は警告が表示され、値は切り捨てられます。たとえば、値が 1025 に設定されている場合、TiDB の実際の値は 1024 です。
- 1 回のパケット送信でサーバーとクライアントが許可する最大パケット サイズ。
SESSIONスコープでは、この変数は読み取り専用です。- この変数は MySQL と互換性があります。
password_history v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 4294967295] - この変数は、パスワード変更回数に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値
0は、パスワード変更回数に基づくパスワード再利用ポリシーを無効にすることを意味します。この変数が正の整数Nに設定されている場合、最後のNパスワードの再利用は許可されません。
mpp_exchange_compression_mode v6.6.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
UNSPECIFIED HIGH_COMPRESSIONFASTUNSPECIFIED:NONE- この変数は、MPP Exchange オペレータのデータ圧縮モードを指定するために使用されます。この変数は、TiDB がバージョン番号
1の MPP 実行プランを選択した場合に有効になります。変数値の意味は次のとおりです。UNSPECIFIED: 未指定を意味します。TiDB は圧縮モードを自動的に選択します。現在、TiDB はFASTモードを自動的に選択します。NONE: データ圧縮は使用されません。FAST: 高速モード。全体的なパフォーマンスは良好で、圧縮率はHIGH_COMPRESSION未満です。HIGH_COMPRESSION: 高圧縮比モード。
mpp_version v6.6.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
UNSPECIFIED 102:UNSPECIFIED- この変数は、MPP 実行プランの異なるバージョンを指定するために使用されます。バージョンを指定すると、TiDB は指定されたバージョンの MPP 実行プランを選択します。変数値の意味は次のとおりです。
UNSPECIFIED: 未指定を意味します。TiDB は最新バージョン2自動的に選択します。0: すべての TiDB クラスター バージョンと互換性があります。このモードでは、MPP バージョンが0より大きい機能は有効になりません。1: v6.6.0 の新機能TiFlashで圧縮によるデータ交換を有効にするために使用されます。詳細については、 MPPバージョンと交換データ圧縮参照してください。2: v7.3.0 の新機能。MPP タスクがTiFlashでエラーに遭遇したときに、より正確なエラー メッセージを提供するために使用されます。
password_reuse_interval v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 4294967295] - この変数は、経過時間に基づいて TiDB がパスワードの再利用を制限できるようにするパスワード再利用ポリシーを確立するために使用されます。デフォルト値
0は、経過時間に基づくパスワード再利用ポリシーを無効にすることを意味します。この変数が正の整数Nに設定されている場合、過去N日間に使用されたパスワードの再利用は許可されません。
最大接続数
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 100000] - 単一の TiDB インスタンスに許可される同時接続の最大数。この変数はリソース制御に使用できます。
- デフォルト値
0制限がないことを意味します。この変数の値が0より大きく、接続数がその値に達すると、TiDBサーバーはクライアントからの新しい接続を拒否します。
最大実行時間
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - 単位: ミリ秒
- ステートメントの最大実行時間。デフォルト値は無制限 (ゼロ) です。
注記:
v6.4.0 より前では、
max_execution_timeシステム変数はすべてのタイプのステートメントに適用されます。v6.4.0 以降では、この変数は読み取り専用ステートメントの最大実行時間のみを制御します。タイムアウト値の精度はおよそ 100 ミリ秒です。つまり、指定したとおりに正確なミリ秒数でステートメントが終了しない可能性があります。
ヒントMAX_EXECUTION_TIMEを持つ SQL 文の場合、この文の最大実行時間は、この変数ではなくヒントによって制限されます。ヒントは、説明されているように、SQL バインディングで使用することもできますSQL FAQで 。
最大準備済みステートメント数
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 1048576] - 現在の TiDB インスタンス内の
PREPAREステートメントの最大数を指定します。 - 値
-1は、現在の TiDB インスタンス内のステートメントの最大数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)
プラグインディレクトリ
注記:
この変数はTiDB Cloudサーバーレスではサポートされていません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- コマンドラインフラグで指定されたプラグインをロードするディレクトリを示します。
プラグインロード
注記:
この変数はTiDB Cloudサーバーレスではサポートされていません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- TiDB の起動時にロードするプラグインを示します。これらのプラグインは、コマンドライン フラグで指定され、カンマで区切られます。
ポート
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4000 - 範囲:
[0, 65535] - MySQL プロトコルを話すときに
tidb-serverがリッスンしているポート。
ランドシード1
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - この変数は、
RAND()SQL 関数で使用されるランダム値ジェネレーターをシードするために使用されます。 - この変数の動作は MySQL と互換性があります。
ランドシード2
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - この変数は、
RAND()SQL 関数で使用されるランダム値ジェネレーターをシードするために使用されます。 - この変数の動作は MySQL と互換性があります。
require_secure_transport v6.1.0 の新機能
注記:
現在、この変数はTiDB Cloud専用ではサポートされていません。TiDB TiDB Cloud Dedicated クラスターではこの変数を有効にしないでください。有効にしないと、SQL クライアント接続エラーが発生する可能性があります。この制限は一時的な制御手段であり、将来のリリースで解決される予定です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: TiDBセルフ
ONの場合はOFFTiDB Cloudサーバーレス場合はTiDB Cloud専用
- この変数は、TiDB へのすべての接続がローカル ソケット上にあるか、TLS を使用していることを保証します。詳細についてはTiDBクライアントとサーバー間のTLSを有効にする参照してください。
- この変数を
ONに設定すると、TLS が有効になっているセッションから TiDB に接続する必要があります。これにより、TLS が正しく構成されていない場合にロックアウト シナリオが発生するのを防ぐことができます。 - この設定は以前は
tidb.tomlオプション (security.require-secure-transport) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。 - v7.5.1 以降の v7.5 パッチ バージョンでは、Security拡張モード (SEM) が有効になっている場合、ユーザーの接続に関する潜在的な問題を回避するために、この変数を
ONに設定することは禁止されています。
skip_name_resolve v5.2.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
tidb-serverインスタンスが接続ハンドシェイクの一部としてホスト名を解決するかどうかを制御します。 - DNS が信頼できない場合は、このオプションを有効にしてネットワーク パフォーマンスを向上させることができます。
注記:
skip_name_resolve=ONの場合、ID にホスト名を持つユーザーはサーバーにログインできなくなります。例:CREATE USER 'appuser'@'apphost' IDENTIFIED BY 'app-password';この例では、
apphostIPアドレスまたはワイルドカード(%)に置き換えることをお勧めします。
ソケット
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- MySQL プロトコルを話すときに
tidb-serverがリッスンしているローカル UNIX ソケット ファイル。
sql_log_bin
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - 変更をTiDBBinlogに書き込むかどうかを示します。
注記:
TiDB の将来のバージョンでは、これをセッション変数としてのみ設定できるようになる可能性があるため、グローバル変数として
sql_log_bin設定することはお勧めしません。
SQLモード
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
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_require_primary_key v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、テーブルに主キーが必要であるという要件を強制するかどうかを制御します。この変数を有効にすると、主キーのないテーブルを作成または変更しようとするとエラーが発生します。
- この機能は、MySQL 8.0 の同様の名前の
sql_require_primary_keyに基づいています。 - TiCDC を使用する場合は、この変数を有効にすることを強くお勧めします。これは、MySQL シンクへの変更をレプリケートするには、テーブルに主キーが必要であるためです。
- この変数を有効にし、TiDB データ移行 (DM) を使用してデータを移行する場合は、 DM タスクコンフィグレーションファイルの
session部分にsql_require_ primary_keyを追加してOFFに設定することをお勧めします。そうしないと、DM がタスクを作成できなくなります。
sql_select_limit v4.0.2 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
18446744073709551615 - 範囲:
[0, 18446744073709551615] - 単位: 行
SELECTステートメントによって返される行の最大数。
ssl_ca
SSL証明書
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- SSL/TLS 接続に使用される証明書ファイル (ファイルがある場合) の場所。この変数の値は、TiDB 構成項目
ssl-certによって定義されます。
SSLキー
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- SSL/TLS 接続に使用される秘密鍵ファイル (存在する場合) の場所。この変数の値は、TiDB 構成項目
ssl-keyによって定義されます。
システムタイムゾーン
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: (システム依存)
- この変数は、TiDB が最初にブートストラップされたときのシステム タイム ゾーンを示します
time_zoneも参照してください。
tidb_adaptive_closest_read_threshold v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4096 - 範囲:
[0, 9223372036854775807] - 単位: バイト
- この変数は、
tidb_replica_readclosest-adaptiveに設定されている場合に、TiDBサーバーが読み取り要求を TiDBサーバーと同じアベイラビリティ ゾーン内のレプリカに送信することを優先するしきい値を制御するために使用されます。推定結果がこのしきい値以上の場合、TiDB は同じアベイラビリティ ゾーン内のレプリカに読み取り要求を送信することを優先します。それ以外の場合、TiDB はリーダー レプリカに読み取り要求を送信します。
tidb_allow_tiflash_cop v7.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - TiDB が計算タスクをTiFlashにプッシュダウンする場合、選択できる方法 (またはプロトコル) は、Cop、BatchCop、および MPP の 3 つです。Cop や BatchCop と比較すると、MPP プロトコルはより成熟しており、タスクとリソースの管理がより優れています。したがって、MPP プロトコルを使用することをお勧めします。
0またはOFF: オプティマイザーはTiFlash MPP プロトコルを使用してのみプランを生成します。1またはON: オプティマイザーは、コスト見積もりに基づいて実行プランを生成するために Cop、BatchCop、または MPP プロトコルを使用するかどうかを決定します。
tidb_allow_batch_cop v4.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: はい
タイプ: 整数
デフォルト値:
1範囲:
[0, 2]この変数は、TiDB がコプロセッサ要求をTiFlashに送信する方法を制御するために使用されます。次の値があります。
0: リクエストをバッチで送信しない1:集計と参加のリクエストはバッチで送信されます2: すべてのコプロセッサ要求はバッチで送信されます
tidb_allow_fallback_to_tikvバージョン5.0の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値: ""
- この変数は、TiKV にフォールバックする可能性のあるstorageエンジンのリストを指定するために使用されます。リスト内の指定されたstorageエンジンの障害により SQL ステートメントの実行が失敗した場合、TiDB は TiKV を使用してこの SQL ステートメントの実行を再試行します。この変数は、"" または "tiflash" に設定できます。この変数が "tiflash" に設定されている場合、 TiFlash がタイムアウト エラー (エラー コード: ErrTiFlashServerTimeout) を返すと、TiDB は TiKV を使用してこの SQL ステートメントの実行を再試行します。
tidb_allow_function_for_expression_index v5.2.0 の新機能
- 範囲: なし
- ヒントSET_VARに該当: いいえ
json_array_appendjson_containsjson_array_insertjson_arrayjson_contains_pathjson_depthjson_extractjson_insertjson_keysjson_lengthjson_merge_patchjson_merge_preservejson_objectjson_prettyjson_quotejson_removejson_replacejson_searchjson_setjson_storage_sizejson_typejson_unquotejson_validlowermd5reversetidb_sharduppervitess_hash- この変数は、式インデックスの作成に使用できる関数を表示するために使用されます。
tidb_allow_mpp v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - クエリを実行するためにTiFlashの MPP モードを使用するかどうかを制御します。値のオプションは次のとおりです。
0またはOFF。これは MPP モードが使用されないことを意味します。v7.3.0 以降のバージョンでは、この変数の値を0またはOFFに設定する場合は、tidb_allow_tiflash_cop変数も有効にする必要があります。そうしないと、クエリでエラーが返される可能性があります。1またはON。これは、オプティマイザがコスト推定に基づいて MPP モードを使用するかどうかを決定することを意味します (デフォルト)。
MPP はTiFlashエンジンが提供する分散コンピューティング フレームワークであり、ノード間のデータ交換を可能にし、高性能で高スループットの SQL アルゴリズムを提供します。MPP モードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。
tidb_allow_remove_auto_inc v2.1.18 および v3.0.4 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
ALTER TABLE MODIFYまたはALTER TABLE CHANGEステートメントを実行して列のAUTO_INCREMENTのプロパティを削除できるかどうかを設定するために使用されます。デフォルトでは許可されていません。
tidb_analyze_partition_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
2。v7.4.0 以前のバージョンではデフォルト値は1です。 - この変数は、TiDB がパーティションテーブルを分析するときに、パーティションテーブルの統計の読み取りと書き込みの同時実行を指定します。
tidb_analyze_version v5.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
2 - 範囲:
[1, 2] - TiDB が統計を収集する方法を制御します。
- TiDB Self-Managed の場合、この変数のデフォルト値は v5.3.0 以降、
1から2に変更されます。 - TiDB Cloudの場合、この変数のデフォルト値は、v6.5.0 以降で
1から2に変更されます。 - クラスターが以前のバージョンからアップグレードされた場合、アップグレード後もデフォルト値
tidb_analyze_versionは変更されません。
- TiDB Self-Managed の場合、この変数のデフォルト値は v5.3.0 以降、
- この変数の詳細な説明については統計入門参照してください。
tidb_analyze_skip_column_types v7.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値: 「json、blob、mediumblob、longblob」
- 可能な値: "json、blob、mediumblob、longblob、text、mediumtext、longtext"
- この変数は、統計を収集する
ANALYZEコマンドを実行するときに、統計収集でスキップされる列のタイプを制御します。この変数はtidb_analyze_version = 2にのみ適用されます。ANALYZE TABLE t COLUMNS c1, ... , cn使用して列を指定しても、そのタイプがtidb_analyze_skip_column_typesの場合、指定された列の統計は収集されません。
mysql> SHOW CREATE TABLE t;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` (
`a` int(11) DEFAULT NULL,
`b` varchar(10) DEFAULT NULL,
`c` json DEFAULT NULL,
`d` blob DEFAULT NULL,
`e` longblob DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT @@tidb_analyze_skip_column_types;
+----------------------------------+
| @@tidb_analyze_skip_column_types |
+----------------------------------+
| json,blob,mediumblob,longblob |
+----------------------------------+
1 row in set (0.00 sec)
mysql> ANALYZE TABLE t;
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
+---------------------------------------------------------------------+
| job_info |
+---------------------------------------------------------------------+
| analyze table columns a, b with 256 buckets, 500 topn, 1 samplerate |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> ANALYZE TABLE t COLUMNS a, c;
Query OK, 0 rows affected, 1 warning (0.04 sec)
mysql> SELECT job_info FROM mysql.analyze_jobs ORDER BY end_time DESC LIMIT 1;
+------------------------------------------------------------------+
| job_info |
+------------------------------------------------------------------+
| analyze table columns a with 256 buckets, 500 topn, 1 samplerate |
+------------------------------------------------------------------+
1 row in set (0.00 sec)
tidbauto_analyze終了時間
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- デフォルト値:
23:59 +0000 - この変数は、統計の自動更新が許可される時間枠を制限するために使用されます。たとえば、UTC 時間で午前 1 時から午前 3 時までの間のみ自動統計更新を許可するには、
tidb_auto_analyze_start_time='01:00 +0000'とtidb_auto_analyze_end_time='03:00 +0000'設定します。
tidb_auto_analyze_partition_batch_size v6.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
1 - 範囲:
[1, 1024] - この変数は、パーティションテーブルを分析するときに TiDB 自動的に分析する実行するパーティションの数を指定します (つまり、パーティションテーブルの統計情報を自動的に収集します)。
- この変数の値がパーティション数より小さい場合、TiDB はパーティションテーブルのすべてのパーティションを複数のバッチで自動的に分析します。この変数の値がパーティション数以上の場合、TiDB はパーティションテーブルのすべてのパーティションを同時に分析します。
- パーティションテーブルのパーティション数がこの変数値よりもはるかに多く、自動分析に時間がかかる場合は、この変数の値を増やして時間の消費を減らすことができます。
tidb_auto_analyze_ratio
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0.5 - 範囲:
[0, 18446744073709551615] - この変数は、TiDB がバックグラウンド スレッドで
ANALYZE TABLE自動的に実行してテーブル統計を更新するときのしきい値を設定するために使用されます。たとえば、値が 0.5 の場合、テーブル内の行の 50% 以上が変更されたときに自動分析がトリガーされます。tidb_auto_analyze_start_timeとtidb_auto_analyze_end_time指定すると、自動分析が特定の時間帯にのみ実行されるように制限できます。
注記:
この機能を使用するには、システム変数
tidb_enable_auto_analyzeONに設定する必要があります。
tidb_auto_analyze_start_time
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- デフォルト値:
00:00 +0000 - この変数は、統計の自動更新が許可される時間枠を制限するために使用されます。たとえば、UTC 時間で午前 1 時から午前 3 時までの間のみ自動統計更新を許可するには、
tidb_auto_analyze_start_time='01:00 +0000'とtidb_auto_analyze_end_time='03:00 +0000'設定します。
tidb_auto_build_stats_concurrency v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 256] - この変数は、統計の自動更新を実行する同時実行性を設定するために使用されます。
tidb_backoff_lock_fast
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
10 - 範囲:
[1, 2147483647] - この変数は、読み取り要求がロックに遭遇する
backoff回を設定するために使用されます。
tidb_backoff_weight
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: 整数
デフォルト値:
2範囲:
[0, 2147483647]この変数は、TiDB
backoffの最大時間、つまり、内部ネットワークまたはその他のコンポーネント(TiKV、PD) の障害が発生したときに再試行要求を送信するための最大再試行時間の重みを増やすために使用されます。この変数は最大再試行時間を調整するために使用でき、最小値は 1 です。たとえば、TiDB が PD から TSO を取得する場合の基本タイムアウトは 15 秒です。1
tidb_backoff_weight = 2場合、TSO を取得する場合の最大タイムアウトは、基本時間 2 = 30 秒*です。ネットワーク環境が悪い場合、この変数の値を適切に増やすことで、タイムアウトによってアプリケーション側へのエラー報告を効果的に軽減できます。アプリケーション側でエラー情報をより早く受け取りたい場合は、この変数の値を最小にしてください。
tidb_バッチコミット
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非推奨のバッチコミット機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、いくつかのステートメントをグループ化してトランザクションを複数のトランザクションに分割し、非アトミックにコミットする可能性がありますが、これは推奨されません。
tidb_batch_delete
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非推奨の batch-dml 機能の一部である batch-delete 機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、
DELETEステートメントが複数のトランザクションに分割され、非アトミックにコミットされる可能性があります。これを機能させるには、tidb_enable_batch_dmlも有効にして、tidb_dml_batch_sizeに正の値を設定する必要がありますが、これは推奨されません。
tidb_batch_insert
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非推奨の batch-dml 機能の一部である batch-insert 機能を有効にするかどうかを制御するために使用されます。この変数を有効にすると、
INSERTステートメントが複数のトランザクションに分割され、非アトミックにコミットされる可能性があります。これを機能させるには、tidb_enable_batch_dmlも有効にして、tidb_dml_batch_sizeに正の値を設定する必要がありますが、これは推奨されません。
tidb_batch_pending_tiflash_count v6.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4000 - 範囲:
[0, 4294967295] ALTER DATABASE SET TIFLASH REPLICA使用してTiFlashレプリカを追加するときに許可される使用不可テーブルの最大数を指定します。使用不可テーブルの数がこの制限を超えると、操作が停止するか、残りのテーブルに対するTiFlashレプリカの設定が非常に遅くなります。
tidb_broadcast_join_threshold_count v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
10240 - 範囲:
[0, 9223372036854775807] - 単位: 行
- 結合操作のオブジェクトがサブクエリに属している場合、オプティマイザはサブクエリの結果セットのサイズを見積もることができません。この場合、サイズは結果セットの行数によって決まります。サブクエリの推定行数がこの変数の値より少ない場合、ブロードキャスト ハッシュ結合アルゴリズムが使用されます。それ以外の場合は、シャッフル ハッシュ結合アルゴリズムが使用されます。
- この変数は、
tidb_prefer_broadcast_join_by_exchange_data_sizeが有効になると有効になりません。
tidb_broadcast_join_threshold_size v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
104857600(100 MiB) - 範囲:
[0, 9223372036854775807] - 単位: バイト
- テーブル サイズが変数の値より小さい場合は、ブロードキャスト ハッシュ結合アルゴリズムが使用されます。それ以外の場合は、シャッフル ハッシュ結合アルゴリズムが使用されます。
- この変数は、
tidb_prefer_broadcast_join_by_exchange_data_sizeが有効になると有効になりません。
tidb_build_stats_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
2。v7.4.0 以前のバージョンではデフォルト値は4です。 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
ANALYZEステートメントを実行する同時実行性を設定するために使用されます。 - 変数を大きな値に設定すると、他のクエリの実行パフォーマンスに影響します。
tidb_build_sampling_stats_concurrency v7.5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- 単位: スレッド
- デフォルト値:
2 - 範囲:
[1, 256] - この変数は、
ANALYZEプロセスでのサンプリング同時実行性を設定するために使用されます。 - 変数を大きな値に設定すると、他のクエリの実行パフォーマンスに影響します。
tidb_capture_plan_baselines v4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、 ベースラインキャプチャ機能を有効にするかどうかを制御するために使用されます。この機能はステートメント サマリーに依存するため、ベースライン キャプチャを使用する前にステートメント サマリーを有効にする必要があります。
- この機能を有効にすると、ステートメント サマリー内の履歴 SQL ステートメントが定期的に走査され、少なくとも 2 回出現する SQL ステートメントに対してバインディングが自動的に作成されます。
tidb_cdc_write_source v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- クラスターに存続: いいえ
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 15] - この変数が 0 以外の値に設定されている場合、このセッションで書き込まれたデータは TiCDC によって書き込まれたものと見なされます。この変数は TiCDC によってのみ変更できます。いかなる場合でも、この変数を手動で変更しないでください。
tidb_check_mb4_value_in_utf8
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
utf8文字セットに基本多言語面 (BMP)値のみを格納するように強制するために使用されます。BMP 外の文字を格納するには、utf8mb4文字セットを使用することをお勧めします。 utf8チェックが緩やかだった以前のバージョンの TiDB からクラスターをアップグレードする場合は、このオプションを無効にする必要がある場合があります。詳細については、 アップグレード後のよくある質問参照してください。
tidbチェックサムテーブル_同時実行性
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
ADMIN CHECKSUM TABLEステートメントを実行するスキャン インデックスの同時実行性を設定するために使用されます。 - 変数を大きな値に設定すると、他のクエリの実行パフォーマンスに影響します。
tidb_committer_concurrency v6.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
128 - 範囲:
[1, 10000] - 単一トランザクションのコミット フェーズでコミットの実行に関連する要求の goroutine の数。
- コミットするトランザクションが大きすぎる場合、トランザクションがコミットされるときのフロー制御キューの待機時間が長すぎる可能性があります。このような状況では、構成値を増やすことでコミットを高速化できます。
- この設定は以前は
tidb.tomlオプション (performance.committer-concurrency) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_config
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- この変数は読み取り専用です。現在の TiDBサーバーの構成情報を取得するために使用されます。
tidb_constraint_check_in_place
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
OFFこの変数は楽観的トランザクションにのみ適用されます。悲観的トランザクションの場合は、代わりに
tidb_constraint_check_in_place_pessimistic使用します。この変数を
OFFに設定すると、一意のインデックス内の重複値のチェックは、トランザクションがコミットされるまで延期されます。これによりパフォーマンスが向上しますが、一部のアプリケーションでは予期しない動作になる可能性があります。詳細については制約参照してください。tidb_constraint_check_in_place~OFFに設定し、楽観的トランザクションを使用する場合: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 't.PRIMARY'tidb_constraint_check_in_place~ONに設定し、楽観的トランザクションを使用する場合:tidb> set @@tidb_constraint_check_in_place=ON; tidb> begin optimistic; tidb> insert into t values (1); ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'
tidb_constraint_check_in_place_pessimistic v6.3.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: デフォルトでは、
pessimistic-txn.constraint-check-in-place-pessimistic構成項目はtrueなので、この変数のデフォルト値はONです。pessimistic-txn.constraint-check-in-place-pessimisticfalseに設定されている場合、この変数のデフォルト値はOFFです。
この変数は悲観的トランザクションにのみ適用されます。楽観的トランザクションの場合は、代わりに
tidb_constraint_check_in_place使用します。この変数を
OFFに設定すると、TiDB は一意のインデックスの一意制約チェックを延期します (インデックスへのロックを必要とするステートメントを次回実行するとき、またはトランザクションをコミットするときまで)。これによりパフォーマンスが向上しますが、一部のアプリケーションでは予期しない動作になる可能性があります。詳細については制約参照してください。この変数を無効にすると、悲観的トランザクションで TiDB が
LazyUniquenessCheckFailureエラーを返す可能性があります。このエラーが発生すると、TiDB は現在のトランザクションをロールバックします。この変数が無効になっている場合、悲観的トランザクションで
SAVEPOINT使用できません。この変数が無効になっている場合、悲観的トランザクションをコミットすると
Write conflictまたはDuplicate entryエラーが返される可能性があります。このようなエラーが発生すると、TiDB は現在のトランザクションをロールバックします。tidb_constraint_check_in_place_pessimistic~OFFに設定し、悲観的トランザクションを使用する場合:set @@tidb_constraint_check_in_place_pessimistic=OFF; create table t (i int key); insert into t values (1); begin pessimistic; insert into t values (1);Query OK, 1 row affectedtidb> commit; -- Check only when a transaction is committed.ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'tidb_constraint_check_in_place_pessimistic~ONに設定し、悲観的トランザクションを使用する場合:set @@tidb_constraint_check_in_place_pessimistic=ON; begin pessimistic; insert into t values (1);ERROR 1062 : Duplicate entry '1' for key 't.PRIMARY'
tidb_cost_model_version v6.2.0 の新機能
注記:
- TiDB v6.5.0 以降、新しく作成されたクラスターはデフォルトでコスト モデル バージョン 2 を使用します。TiDB バージョンを v6.5.0 より前から v6.5.0 以降にアップグレードした場合、値
tidb_cost_model_versionは変更されません。- コスト モデルのバージョンを切り替えると、クエリ プランが変更される可能性があります。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
2 - 値のオプション:
1: TiDB v6.4.0 以前のバージョンでデフォルトで使用されるコスト モデル バージョン 1 を有効にします。2: コストモデル バージョン 2有効にします。これは TiDB v6.5.0 で一般に利用可能であり、内部テストではバージョン 1 よりも正確です。
- コストモデルのバージョンはオプティマイザの計画決定に影響します。詳細についてはコストモデル参照してください。
tidb_current_ts
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 9223372036854775807] - この変数は読み取り専用です。現在のトランザクションのタイムスタンプを取得するために使用されます。
tidb_ddl_disk_quota v6.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
107374182400(100 GiB) - 範囲:
[107374182400, 1125899906842624]([100 GiB、1 PiB]) - 単位: バイト
- この変数は、
tidb_ddl_enable_fast_reorg有効になっている場合にのみ有効になります。インデックス作成時のバックフィル中のローカルstorageの使用制限を設定します。
tidb_ddl_enable_fast_reorg v6.3.0 の新機能
注記:
- TiDB Cloud専用クラスターを使用している場合、この変数を使用してインデックス作成の速度を向上させるには、TiDB クラスターが AWS でホストされ、TiDB ノードのサイズが少なくとも 8 vCPU であることを確認してください。
- 4 つの vCPU を備えたTiDB Cloud専用のクラスターの場合、インデックス作成中にリソース制限がクラスターの安定性に影響するのを防ぐために、
tidb_ddl_enable_fast_reorg手動で無効にすることをお勧めします。この設定を無効にすると、トランザクションを使用してインデックスを作成できるようになり、クラスターへの全体的な影響が軽減されます。- TiDB Cloudサーバーレスクラスターの場合、この変数は読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、インデックス作成のバックフィルの速度を向上させるために、
ADD INDEXとCREATE INDEXのアクセラレーションを有効にするかどうかを制御します。この変数値をONに設定すると、大量のデータを含むテーブルでのインデックス作成のパフォーマンスが向上します。 - v7.1.0 以降、インデックス アクセラレーション操作はチェックポイントをサポートします。障害により TiDB 所有者ノードが再起動または変更された場合でも、TiDB は定期的に自動的に更新されるチェックポイントから進行状況を回復できます。
- 完了した
ADD INDEX操作が高速化されているかどうかを確認するには、ADMIN SHOW DDL JOBSステートメントを実行して、JOB_TYPE列にingest表示されるかどうかを確認します。
注記:
インデックスの高速化には、書き込み可能で十分な空き領域がある
temp-dirが必要ですtemp-dirが使用できない場合、TiDB は高速化されていないインデックス構築にフォールバックします。5temp-dirSSD ディスクに配置することをお勧めします。TiDB を v6.5.0 以降にアップグレードする前に、TiDB の
temp-dirパスが SSD ディスクに正しくマウントされているかどうかを確認することをお勧めします。TiDB を実行するオペレーティング システム ユーザーに、このディレクトリの読み取りおよび書き込み権限があることを確認してください。権限がない場合、DDL 操作で予期しない問題が発生する可能性があります。このパスは TiDB 構成項目であり、TiDB の再起動後に有効になります。したがって、アップグレード前にこの構成項目を設定すると、再度の再起動を回避できます。
tidb_enable_dist_task v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
OFF - この変数は、 TiDB 分散実行フレームワーク (DXF)を有効にするかどうかを制御するために使用されます。フレームワークを有効にすると、DDL やインポートなどの DXF タスクは、クラスター内の複数の TiDB ノードによって分散実行され、完了します。
- TiDB v7.1.0 以降、DXF はパーティション化されたテーブルに対して
ADD INDEXステートメントを分散して実行することをサポートします。 - TiDB v7.2.0 以降、DXF はインポート ジョブの
IMPORT INTOステートメントの分散実行をサポートします。 - この変数は
tidb_ddl_distribute_reorgから名前が変更されました。
tidb_cloud_storage_uri v7.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
"" - この変数は、Amazon S3 クラウドstorageURI を指定してグローバルソート有効にするために使用されます。 TiDB 分散実行フレームワーク (DXF)を有効にした後、URI を構成し、storageにアクセスするために必要な権限を持つ適切なクラウドstorageパスを指すようにすることで、グローバル ソート機能を使用できます。詳細については、 Amazon S3 URI 形式参照してください。
- 次のステートメントでは、グローバル ソート機能を使用できます。
ADD INDEXステートメント。- インポート ジョブの
IMPORT INTOステートメント。
tidbddlエラーカウント制限
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
512 - 範囲:
[0, 9223372036854775807] - この変数は、DDL 操作が失敗した場合の再試行回数を設定するために使用されます。再試行回数がパラメータ値を超えると、間違った DDL 操作はキャンセルされます。
tidb_ddl_flashback_concurrency v6.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
64 - 範囲:
[1, 256] - この変数は
FLASHBACK CLUSTERの同時実行性を制御します。
tidbddl_reorgバッチサイズ
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
256 - 範囲:
[32, 10240] - 単位: 行
- この変数は、DDL 操作のフェーズ
re-organizeでバッチ サイズを設定するために使用されます。たとえば、TiDB がADD INDEX操作を実行する場合、インデックス データはtidb_ddl_reorg_worker_cnt(数) の同時ワーカーによってバックフィルされる必要があります。各ワーカーは、インデックス データをバッチでバックフィルします。tidb_ddl_enable_fast_reorgOFFに設定すると、ADD INDEXトランザクションとして実行されます。ADD INDEX実行中に対象列にUPDATEやREPLACEなどの更新操作が多数ある場合、バッチ サイズが大きいほどトランザクション競合の可能性が高くなります。 この場合、バッチ サイズを小さい値に設定することをお勧めします。 最小値は 32 です。- トランザクションの競合が存在しない場合、または
tidb_ddl_enable_fast_reorgONに設定されている場合、バッチ サイズを大きな値に設定できます。これにより、データのバックフィルが高速化されますが、TiKV への書き込み負荷も増加します。適切なバッチ サイズについては、tidb_ddl_reorg_worker_cntの値も参照する必要があります。参考としてオンライン ワークロードとADD INDEX操作のインタラクション テスト参照してください。
tidb_ddl_reorg_priority
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
PRIORITY_LOW PRIORITY_HIGHPRIORITY_NORMALオプション:PRIORITY_LOW- この変数は、第
re-organizeフェーズで第ADD INDEX操作を実行する優先度を設定するために使用されます。 - この変数の値は
PRIORITY_LOW、PRIORITY_NORMALまたはPRIORITY_HIGHに設定できます。
tidb_ddl_reorg_worker_cnt
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、第
re-organizeフェーズでの DDL 操作の同時実行性を設定するために使用されます。
tidb_default_string_match_selectivity v6.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- デフォルト値:
0.8 - 範囲:
[0, 1] - この変数は、行数を推定するときに、フィルター条件で
like、rlike、およびregexp関数の関数の選択性を設定するために使用されます。この変数は、これらの関数の推定を支援するために TopN を有効にするかどうかも制御します。 - TiDB は、統計を使用してフィルター条件の
like推定しようとします。ただし、like複雑な文字列に一致する場合、またはrlikeまたはregexp使用する場合、TiDB は統計を十分に使用できないことが多く、代わりにデフォルト値の0.8が選択率として設定され、不正確な推定が発生します。 - この変数は、前述の動作を変更するために使用されます。変数が
0以外の値に設定されている場合、選択率は0.8ではなく指定された変数値になります。 - 変数が
0に設定されている場合、TiDB は統計で TopN を使用して評価して精度を向上させ、前述の 3 つの関数を推定するときに統計で NULL 番号を考慮します。前提条件は、tidb_analyze_version2に設定されているときに統計が収集されることです。このような評価は、パフォーマンスにわずかに影響を及ぼす可能性があります。 - 変数が
0.8以外の値に設定されている場合、TiDB はそれに応じてnot like、not rlike、およびnot regexpの推定値を調整します。
tidb_disable_txn_auto_retry
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
ONこの変数は、明示的な楽観的トランザクションの自動再試行を無効にするかどうかを設定するために使用されます。デフォルト値
ONは、トランザクションが TiDB で自動的に再試行されず、COMMITステートメントがアプリケーションレイヤーで処理する必要があるエラーを返す可能性があることを意味します。値を
OFFに設定すると、TiDB は自動的にトランザクションを再試行し、COMMITステートメントからのエラーが少なくなります。この変更を行うときは、更新が失われる可能性があるため注意してください。この変数は、TiDB で自動的にコミットされた暗黙的なトランザクションや内部的に実行されたトランザクションには影響しません。これらのトランザクションの最大再試行回数は、値
tidb_retry_limitによって決まります。詳細については再試行の制限参照してください。
この変数は楽観的トランザクションにのみ適用され、悲観的トランザクションには適用されません。悲観的トランザクションの再試行回数は
max_retry_countで制御されます。
tidb_distsql_scan_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
15 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
scan操作の同時実行性を設定するために使用されます。 - OLAP シナリオでは大きい値を使用し、OLTP シナリオでは小さい値を使用します。
- OLAP シナリオの場合、最大値はすべての TiKV ノードの CPU コアの数を超えてはなりません。
- テーブルに多数のパーティションがある場合は、変数値を適切に減らして(スキャンするデータのサイズとスキャンの頻度によって決定)、TiKV がメモリ不足 (OOM) になるのを防ぐことができます。
LIMIT句のみを含む単純なクエリの場合、LIMIT値が 100000 未満であれば、TiKV にプッシュダウンされたスキャン操作では、この変数の値が1として扱われ、実行効率が向上します。SELECT MAX/MIN(col) FROM ...クエリの場合、col列にMAX(col)またはMIN(col)関数で必要な順序と同じ順序でソートされたインデックスがある場合、TiDB はクエリをSELECT col FROM ... LIMIT 1に書き換えて処理し、この変数の値も1として処理されます。たとえば、SELECT MIN(col) FROM ...の場合、col列に昇順のインデックスがある場合、TiDB はクエリをSELECT col FROM ... LIMIT 1に書き換えてインデックスの最初の行を直接読み取ることで、MIN(col)値をすばやく取得できます。
tidbdmlバッチサイズ
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - 単位: 行
- この値が
0より大きい場合、TiDB はINSERTなどのステートメントを小さなトランザクションにバッチコミットします。これによりメモリ使用量が削減され、一括変更によってtxn-total-size-limitに達しないようにすることができます。 - ACID準拠を実現するのは値
0のみです。これを他の値に設定すると、TiDB の原子性と分離性の保証が破られます。 - この変数を機能させるには、
tidb_enable_batch_dml、tidb_batch_insertおよびtidb_batch_deleteの少なくとも 1 つも有効にする必要があります。
注記:
v7.0.0 以降、
tidb_dml_batch_sizeLOAD DATAステートメントには適用されなくなりました。
tidb_enable_1pcバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、1 つのリージョンにのみ影響するトランザクションに対して 1 フェーズ コミット機能を有効にするかどうかを指定するために使用されます。よく使用される 2 フェーズ コミットと比較して、1 フェーズ コミットはトランザクション コミットのレイテンシーを大幅に削減し、スループットを向上させることができます。
注記:
- デフォルト値
ONは新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFFが使用されます。- TiDB Binlog を有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにティCDC使用することをお勧めします。
- このパラメータを有効にすると、1 フェーズ コミットがトランザクション コミットのオプション モードになるだけです。実際、トランザクション コミットの最も適切なモードは TiDB によって決定されます。
tidb_enable_analyze_snapshot v6.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
ANALYZE実行するときに履歴データを読み取るか、最新のデータを読み取るかを制御します。この変数がONに設定されている場合、ANALYZEANALYZEの時点で利用可能な履歴データを読み取ります。この変数がOFFに設定されている場合、ANALYZE最新のデータを読み取ります。 - v5.2 より前は、
ANALYZE最新のデータを読み取ります。v5.2 から v6.1 までは、ANALYZEANALYZEの時点で利用可能な履歴データを読み取ります。
tidb_enable_async_commit v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、2 フェーズ トランザクション コミットの 2 番目のフェーズをバックグラウンドで非同期に実行するために、非同期コミット機能を有効にするかどうかを制御します。この機能を有効にすると、トランザクション コミットのレイテンシーを短縮できます。
注記:
- デフォルト値
ONは新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFFが使用されます。- TiDB Binlog を有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにティCDC使用することをお勧めします。
- このパラメータを有効にすると、非同期コミットがトランザクション コミットのオプション モードになるだけです。実際、トランザクション コミットの最も適切なモードは TiDB によって決定されます。
tidb_enable_auto_analyze v6.1.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - TiDB がバックグラウンド操作としてテーブル統計を自動的に更新するかどうかを決定します。
- この設定は以前は
tidb.tomlオプション (performance.run-auto-analyze) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_enable_auto_increment_in_generated
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、生成された列または式インデックスを作成するときに
AUTO_INCREMENT列を含めるかどうかを決定するために使用されます。
tidb_enable_batch_dml
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非推奨の batch-dml 機能を有効にするかどうかを制御します。この機能を有効にすると、特定のステートメントが複数のトランザクションに分割される可能性があります。これは非アトミックであり、注意して使用する必要があります。batch-dml を使用する場合は、操作対象のデータに対して同時操作がないことを確認する必要があります。この機能を動作させるには、
tidb_batch_dml_sizeに正の値を指定し、tidb_batch_insertとtidb_batch_deleteの少なくとも 1 つを有効にする必要があります。
tidb_enable_cascades_planner
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、カスケード プランナーを有効にするかどうかを制御するために使用されます。
tidb_enable_check_constraint v7.2.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
CHECK制約機能を有効にするかどうかを制御するために使用されます。
tidb_enable_chunk_rpc v4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、コプロセッサーで
Chunkデータ エンコーディング形式を有効にするかどうかを制御するために使用されます。
tidb_enable_clustered_index v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
ON - 可能な
INT_ONLYONOFF - この変数は、デフォルトで主キーをクラスター化インデックスとして作成するかどうかを制御するために使用されます。ここでの「デフォルト」とは、ステートメントでキーワード
CLUSTERED/NONCLUSTEREDが明示的に指定されていないことを意味します。サポートされている値はOFF、ON、およびINT_ONLYです。OFF、主キーがデフォルトで非クラスター化インデックスとして作成されることを示します。ON、主キーがデフォルトでクラスター化インデックスとして作成されることを示します。INT_ONLY動作が構成項目alter-primary-keyによって制御されることを示します。alter-primary-keytrueに設定すると、すべての主キーはデフォルトで非クラスター化インデックスとして作成されます。falseに設定すると、整数列で構成される主キーのみがクラスター化インデックスとして作成されます。
tidb_enable_ddl v6.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - 可能な値:
OFF、ON - この変数は、対応する TiDB インスタンスが DDL 所有者になれるかどうかを制御します。現在の TiDB クラスターに TiDB インスタンスが 1 つしかない場合は、それが DDL 所有者になることを防ぐことはできません。つまり、この変数を
OFFに設定することはできません。
tidb_enable_collect_execution_info
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、各演算子の実行情報をスロー クエリ ログに記録するかどうかを制御します。
tidb_enable_column_tracking v5.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TiDB が
PREDICATE COLUMNS収集できるようにするかどうかを制御します。収集を有効にした後で無効にすると、以前に収集されたPREDICATE COLUMNSの情報がクリアされます。詳細については、 いくつかの列の統計を収集する参照してください。
tidb_enable_enhanced_security
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、接続している TiDBサーバーでSecurity拡張モード (SEM) が有効になっているかどうかを示します。値を変更するには、TiDBサーバー構成ファイルの値
enable-semを変更し、TiDBサーバーを再起動する必要があります。
- SEM は、 セキュリティ強化Linuxなどのシステムの設計にヒントを得ています。SEM では、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
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
exchange partitions with tables機能を有効にするかどうかを制御します。デフォルト値はONです。つまり、デフォルトではexchange partitions with tables有効になっています。 - この変数は v6.3.0 以降では非推奨です。その値はデフォルト値
ONに固定されます。つまり、デフォルトではexchange partitions with tablesが有効になります。
tidb_enable_extended_stats
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TiDB がオプティマイザーをガイドするための拡張統計を収集できるかどうかを示します。詳細については、 拡張統計入門参照してください。
tidb_enable_external_ts_read v6.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数が
ONに設定されている場合、TiDB はtidb_external_tsで指定されたタイムスタンプを持つデータを読み取ります。
tidb_external_ts v6.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 tidb_enable_external_ts_readONに設定すると、TiDB はこの変数で指定されたタイムスタンプを持つデータを読み取ります。
tidb_enable_fast_analyze
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、統計
Fast Analyze機能を有効にするかどうかを設定するために使用されます。 - 統計
Fast Analyze機能を有効にすると、TiDB は統計として約 10,000 行のデータをランダムにサンプリングします。データが不均等に分散されていたり、データ サイズが小さい場合、統計の精度は低くなります。これにより、間違ったインデックスを選択するなど、最適でない実行プランが発生する可能性があります。通常のAnalyzeステートメントの実行時間が許容できる場合は、Fast Analyze機能を無効にすることをお勧めします。
tidb_enable_fast_table_check v7.2.0 の新機能
注記:
この変数は多値インデックスおよびプレフィックス インデックスでは機能しません。
- 範囲: セッション | グローバル
- クラスターに永続化: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、チェックサムベースのアプローチを使用してテーブル内のデータとインデックスの整合性を迅速にチェックするかどうかを制御するために使用されます。デフォルト値
ONは、この機能がデフォルトで有効になっていることを意味します。 - この変数を有効にすると、TiDB は
ADMIN CHECK [TABLE|INDEX]ステートメントをより高速に実行できます。
tidb_enable_foreign_key v6.3.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v6.6.0 より前では、デフォルト値は
OFFです。v6.6.0 以降では、デフォルト値はONです。 - この変数は、
FOREIGN KEY機能を有効にするかどうかを制御します。
tidb_enable_gc_aware_memory_track
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、GC 対応メモリトラックを有効にするかどうかを制御します。
tidb_enable_non_prepared_plan_cache
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、 準備されていないプラン キャッシュ機能を有効にするかどうかを制御します。
- この機能を有効にすると、追加のメモリと CPU オーバーヘッドが発生する可能性があり、すべての状況に適しているとは限りません。実際のシナリオに応じて、この機能を有効にするかどうかを判断してください。
tidb_enable_non_prepared_plan_cache_for_dml v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF。 - この変数は、DML ステートメントに対して準備されていないプラン キャッシュ機能を有効にするかどうかを制御します。
tidb_enable_gogc_tuner v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、GOGC チューナーを有効にするかどうかを制御します。
履歴統計を有効にする
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、履歴統計を有効にするかどうかを制御します。デフォルト値は
OFFからONに変更され、履歴統計がデフォルトで有効になっていることを意味します。
tidb_enable_historical_stats_for_capture
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
PLAN REPLAYER CAPTUREでキャプチャされた情報にデフォルトで履歴統計が含まれるかどうかを制御します。デフォルト値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 クラスターでは、この変数はデフォルトで有効になっています。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、インデックス マージ機能を有効にするかどうかを制御するために使用されます。
tidb_enable_index_merge_join
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF IndexMergeJoin演算子を有効にするかどうかを指定します。- この変数は TiDB の内部操作にのみ使用されます。調整することはお勧めしません。調整すると、データの正確性が影響を受ける可能性があります。
tidb_enable_legacy_instance_scope v6.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
SET SESSIONおよびSET GLOBAL構文を使用してINSTANCEスコープの変数を設定することを許可します。 - このオプションは、TiDB の以前のバージョンとの互換性を保つためにデフォルトで有効になっています。
tidb_enable_list_partition v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
LIST (COLUMNS) TABLE PARTITION機能を有効にするかどうかを設定するために使用されます。
tidb_enable_local_txn
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は未リリースの機能に使用されます。変数値を変更しないでください。
tidb_enable_metadata_lock v6.3.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、 メタデータロック機能を有効にするかどうかを設定するために使用されます。この変数を設定するときは、クラスター内で実行中の DDL ステートメントがないことを確認する必要があります。そうでない場合、データが不正確または不整合になる可能性があります。
tidb_enable_mutation_checker v6.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、TiDB ミューテーション チェッカーを有効にするかどうかを制御するために使用します。これは、DML ステートメントの実行中にデータとインデックス間の一貫性をチェックするために使用されるツールです。チェッカーがステートメントに対してエラーを返すと、TiDB はステートメントの実行をロールバックします。この変数を有効にすると、CPU 使用率がわずかに増加します。詳細については、 データとインデックス間の不整合のトラブルシューティング参照してください。
- v6.0.0 以降のバージョンの新しいクラスターの場合、デフォルト値は
ONです。v6.0.0 より前のバージョンからアップグレードする既存のクラスターの場合、デフォルト値はOFFです。
tidb_enable_new_cost_interface v6.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - TiDB v6.2.0 は、以前のコスト モデルの実装をリファクタリングします。この変数は、リファクタリングされたコスト モデルの実装を有効にするかどうかを制御します。
- リファクタリングされたコスト モデルでは以前と同じコスト式が使用され、プランの決定は変更されないため、この変数はデフォルトで有効になっています。
- クラスターが v6.1 から v6.2 にアップグレードされた場合、この変数は
OFFのままなので、手動で有効にすることをお勧めします。クラスターが v6.1 より前のバージョンからアップグレードされた場合、この変数はデフォルトでONに設定されます。
tidb_enable_new_only_full_group_by_check v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TiDB が
ONLY_FULL_GROUP_BYチェックを実行するときの動作を制御します。ONLY_FULL_GROUP_BY詳細については、 MySQL ドキュメントを参照してください。v6.1.0 では、TiDB はこのチェックをより厳格かつ正確に処理します。 - バージョンのアップグレードによって発生する可能性のある互換性の問題を回避するために、この変数のデフォルト値は v6.1.0 では
OFFになっています。
tidb_enable_noop_functions v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
OFF - 可能な
WARNONOFF - デフォルトでは、まだ実装されていない機能の構文を使用しようとすると、TiDB はエラーを返します。変数値が
ONに設定されている場合、TiDB はそのような利用できない機能のケースを黙って無視します。これは、SQL コードを変更できない場合に役立ちます。 noop関数を有効にすると、次の動作が制御されます。LOCK IN SHARE MODE構文SQL_CALC_FOUND_ROWS構文START TRANSACTION READ ONLYとSET TRANSACTION READ ONLY構文tx_read_onlytransaction_read_onlysql_auto_is_nulloffline_modesuper_read_onlyread_onlyGROUP BY <expr> ASC|DESC構文
tidb_enable_noop_variables v6.2.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - 変数値を
OFFに設定すると、TiDB は次のように動作します。SET使用してnoop変数を設定すると、TiDB は"setting *variable_name* has no effect in TiDB"警告を返します。SHOW [SESSION | GLOBAL] VARIABLESの結果にはnoop変数は含まれません。SELECT使用してnoop変数を読み取ると、TiDB は"variable *variable_name* has no effect in TiDB"警告を返します。
- TiDB インスタンスが
noop変数を設定して読み取ったかどうかを確認するには、SELECT * FROM INFORMATION_SCHEMA.CLIENT_ERRORS_SUMMARY_GLOBAL;ステートメントを使用できます。
tidb_enable_null_aware_anti_join v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値: v7.0.0 より前では、デフォルト値は
OFFです。v7.0.0 以降では、デフォルト値はONです。 - タイプ: ブール値
- この変数は、特殊なセット演算子
NOT INと!= ALLによって導かれるサブクエリによって ANTI JOIN が生成される場合に、TiDB が Null Aware Hash Join を適用するかどうかを制御します。 - 以前のバージョンから v7.0.0 以降のクラスターにアップグレードすると、この機能は自動的に有効になり、この変数は
ONに設定されます。
tidb_enable_outer_join_reorder v6.1.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: はい
タイプ: ブール値
デフォルト値:
ONv6.1.0 以降、TiDB の結合したテーブルの再配置アルゴリズムは Outer Join をサポートしています。この変数は、TiDB が Join Reorder の Outer Join のサポートを有効にするかどうかを制御します。
クラスターが以前のバージョンの TiDB からアップグレードされる場合は、次の点に注意してください。
- アップグレード前の TiDB バージョンが v6.1.0 より前の場合、アップグレード後のこの変数のデフォルト値は
ONなります。 - アップグレード前の TiDB バージョンが v6.1.0 以降の場合、アップグレード後の変数のデフォルト値はアップグレード前の値に従います。
- アップグレード前の TiDB バージョンが v6.1.0 より前の場合、アップグレード後のこの変数のデフォルト値は
tidb_enable_inl_join_inner_multi_pattern v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、内部テーブルに
SelectionまたはProjection演算子がある場合に、インデックス結合がサポートされるかどうかを制御します。デフォルト値OFFは、このシナリオではインデックス結合がサポートされないことを意味します。
tidb_enable_ordered_result_mode
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
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 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: はい
タイプ: ブール値
デフォルト値:
ONこの変数は、コプロセッサ要求を送信するためにページング方式を使用するかどうかを制御します。TiDB バージョン [v5.4.0、v6.2.0) の場合、この変数は
IndexLookup演算子にのみ有効です。v6.2.0 以降の場合、この変数はグローバルに適用されます。v6.4.0 以降、この変数のデフォルト値はOFFからONに変更されます。ユーザーシナリオ:
- すべての OLTP シナリオでは、ページング方式を使用することをお勧めします。
IndexLookupとLimit使用し、LimitIndexScanにプッシュダウンできない読み取りクエリの場合、読み取りクエリのレイテンシーが高くなり、 TiKVUnified read pool CPUの使用率が高くなる可能性があります。このような場合、Limit演算子は少量のデータ セットのみを必要とするため、tidb_enable_pagingONに設定すると、 TiDB が処理するデータが少なくなり、クエリのレイテンシーとリソース消費が削減されます。- Dumplingを使用したデータのエクスポートや完全なテーブル スキャンなどのシナリオでは、ページングを有効にすると、TiDB プロセスのメモリ消費を効果的に削減できます。
注記:
TiFlashの代わりに TiKV がstorageエンジンとして使用される OLAP シナリオでは、ページングを有効にすると、場合によってはパフォーマンスが低下する可能性があります。低下が発生した場合は、この変数を使用してページングを無効にするか、
tidb_min_paging_sizeおよびtidb_max_paging_size変数を使用してページング サイズの行の範囲を調整することを検討してください。
tidb_enable_parallel_apply v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
Apply演算子の同時実行を有効にするかどうかを制御します。同時実行の数はtidb_executor_concurrency変数によって制御されます。5 演算子Apply相関サブクエリを処理し、デフォルトでは同時実行がないため、実行速度は遅くなります。この変数値を1に設定すると、同時実行が増加し、実行速度が向上します。現在、Applyの同時実行はデフォルトで無効になっています。
tidb_enable_pipelined_window_function パイプラインウィンドウ関数を有効にする
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、ウィンドウ関数にパイプライン実行アルゴリズムを使用するかどうかを指定します。
tidb_enable_plan_cache_for_param_limit v6.6.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、 プリペアドプランキャッシュ が、変数を
LIMITパラメータ (LIMIT ?) として持つ実行プランをキャッシュするかどうかを制御します。デフォルト値はONで、 プリペアドプランキャッシュ がそのような実行プランのキャッシュをサポートすることを意味します。Prepared プリペアドプランキャッシュ は、 10000 を超える変数を持つ実行プランのキャッシュをサポートしないことに注意してください。
tidb_enable_plan_cache_for_subquery v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、プリペアドプランキャッシュがサブクエリを含むクエリをキャッシュするかどうかを制御します。
tidb_enable_plan_replayer_capture
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
PLAN REPLAYER CAPTURE機能を有効にするかどうかを制御します。デフォルト値ON、PLAN REPLAYER CAPTURE機能を有効にすることを意味します。
tidb_enable_plan_replayer_continuous_capture v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
PLAN REPLAYER CONTINUOUS CAPTURE機能を有効にするかどうかを制御します。デフォルト値OFF、機能が無効であることを意味します。
tidb_enable_prepared_plan_cache v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - プリペアドプランキャッシュ有効にするかどうかを決定します。有効にすると、
PrepareとExecuteの実行プランがキャッシュされ、以降の実行では実行プランの最適化がスキップされ、パフォーマンスが向上します。 - この設定は以前は
tidb.tomlオプション (prepared-plan-cache.enabled) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_enable_prepared_plan_cache_memory_monitor v6.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - この変数は、プリペアドプランキャッシュにキャッシュされた実行プランによって消費されるメモリをカウントするかどうかを制御します。詳細については、 プリペアドプランキャッシュのメモリ管理参照してください。
tidb_enable_pseudo_for_outdated_stats v5.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、統計が古くなった場合にテーブルの統計を使用する際のオプティマイザの動作を制御します。
- オプティマイザは、次のようにしてテーブルの統計が古くなっているかどうかを判断します。統計を取得するためにテーブルで最後に
ANALYZE実行されて以降、テーブル行の 80% が変更された場合 (変更された行数を合計行数で割った値)、オプティマイザはこのテーブルの統計が古くなっていると判断します。この比率は、pseudo-estimate-ratio構成を使用して変更できます。
- デフォルトでは (変数値
OFF)、テーブルの統計が古くなった場合、オプティマイザは引き続きテーブルの統計を使用します。変数値をONに設定すると、オプティマイザは、合計行数を除いてテーブルの統計が信頼できないと判断します。次に、オプティマイザは疑似統計を使用します。 - テーブル上のデータが頻繁に変更され、そのテーブルに対して
ANALYZE時間内に実行されない場合、実行プランを安定させるために、変数値をOFFに設定することをお勧めします。
tidb_enable_rate_limit_action
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、データを読み取る演算子の動的メモリ制御機能を有効にするかどうかを制御します。デフォルトでは、この演算子は、データを読み取るために許可される最大スレッド数
tidb_distsql_scan_concurrencyを有効にします。単一の SQL ステートメントのメモリ使用量が毎回tidb_mem_quota_query超えると、データを読み取る演算子は 1 つのスレッドを停止します。
- データを読み取る演算子に残っているスレッドが 1 つだけであり、単一の SQL ステートメントのメモリ使用量が継続的に
tidb_mem_quota_query超える場合、この SQL ステートメントはディスクへのデータの流出などの他のメモリ制御動作をトリガーします。 - この変数は、SQL ステートメントがデータを読み取るだけの場合に、メモリ使用量を効果的に制御します。コンピューティング操作 (結合操作や集計操作など) が必要な場合は、メモリ使用量が
tidb_mem_quota_queryによって制御されない可能性があり、OOM のリスクが高まります。
tidb_enable_resource_control v6.6.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - タイプ: ブール値
- この変数はリソース制御機能のスイッチです。この変数を
ONに設定すると、TiDB クラスターはリソース グループに基づいてアプリケーション リソースを分離できます。
tidb_enable_reuse_chunk v6.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - 値
ONオプション:OFF - この変数は、TiDB がチャンク オブジェクト キャッシュを有効にするかどうかを制御します。値が
ONの場合、TiDB はキャッシュされたチャンク オブジェクトを優先的に使用し、要求されたオブジェクトがキャッシュにない場合にのみシステムから要求します。値がOFF場合、TiDB はシステムからチャンク オブジェクトを直接要求します。
遅いログを有効にする
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、スロー ログ機能を有効にするかどうかを制御するために使用されます。
tidb_enable_tmp_storage_on_oom
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON ONのオプション:OFF- 単一の SQL ステートメントがシステム変数
tidb_mem_quota_queryで指定されたメモリクォータを超えた場合に、一部の演算子の一時storageを有効にするかどうかを制御します。 - v6.3.0 より前では、TiDB 構成項目
oom-use-tmp-storageを使用してこの機能を有効または無効にできます。クラスターを v6.3.0 以降のバージョンにアップグレードすると、TiDB クラスターはこの変数をoom-use-tmp-storageの値を使用して自動的に初期化します。その後、値oom-use-tmp-storageを変更しても有効になりません。
tidb_enable_stmt_summary v3.0.4 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、ステートメント サマリー機能を有効にするかどうかを制御するために使用されます。有効にすると、時間消費などの SQL 実行情報が
information_schema.STATEMENTS_SUMMARYシステム テーブルに記録され、SQL パフォーマンスの問題を特定してトラブルシューティングできるようになります。
tidb_enable_strict_double_type_check v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、タイプ
DOUBLEの無効な定義でテーブルを作成できるかどうかを制御するために使用されます。この設定は、タイプの検証がそれほど厳格ではなかった以前のバージョンの TiDB からのアップグレード パスを提供することを目的としています。 - デフォルト値
ONは MySQL と互換性があります。
たとえば、浮動小数点型の精度は保証されていないため、型DOUBLE(10)は無効とみなされます。 tidb_enable_strict_double_type_check OFFに変更すると、次のテーブルが作成されます。
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
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
ON - 可能な
AUTOONOFF - この変数は、
TABLE PARTITION機能を有効にするかどうかを設定するために使用されます。ON範囲パーティション分割、ハッシュ パーティション分割、および 1 つの列による範囲列パーティション分割を有効にすることを示します。AUTOONと同じように関数。OFFTABLE PARTITION機能を無効にすることを示します。この場合、パーティション テーブルを作成する構文は実行できますが、作成されるテーブルはパーティション化されたテーブルではありません。
tidb_enable_telemetry v4.0.2 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、TiDB でのテレメトリ収集を有効にするかどうかを動的に制御するために使用されます。現在のバージョンでは、テレメトリはデフォルトで無効になっています。すべての TiDB インスタンスで
enable-telemetryTiDB 構成項目がfalseに設定されている場合、テレメトリ収集は常に無効になり、このシステム変数は有効になりません。詳細については、 テレメトリー参照してください。
tidb_enable_tiflash_read_for_write_stmt v6.3.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
ONこの変数は、
INSERT、DELETE、およびUPDATEを含む SQL ステートメントの読み取り操作をTiFlashにプッシュダウンできるかどうかを制御します。例:INSERT INTO SELECTステートメントにSELECTクエリ (一般的な使用シナリオ: TiFlashクエリ結果の具体化 )UPDATE文とDELETE文のWHERE条件フィルタリング
v7.1.0 以降、この変数は非推奨です。
tidb_allow_mpp = ON場合、オプティマイザーは、 SQL モードとTiFlashレプリカのコスト見積もりに基づいて、クエリをTiFlashにプッシュダウンするかどうかをインテリジェントに決定します。TiDB では、現在のセッションのSQL モードが厳密でない場合にのみ、INSERT、DELETE、およびUPDATE(INSERT INTO SELECTなど) を含む SQL ステートメントの読み取り操作をTiFlashにプッシュダウンできることに注意してください。つまり、sql_mode値にSTRICT_TRANS_TABLESとSTRICT_ALL_TABLES含まれません。
tidb_enable_top_sql v5.4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 Top SQL機能を有効にするかどうかを制御するために使用されます。
tidb_enable_tso_follower_proxy v5.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TSOFollowerプロキシ機能を有効にするために使用されます。値が
OFFの場合、TiDB は PD リーダーからのみ TSO を取得します。この機能を有効にすると、TiDB はすべての PD ノードに要求を均等に送信し、TSO 要求を PD フォロワー経由で転送することで TSO を取得します。これにより、PD リーダーの CPU 負荷が軽減されます。 - TSOFollowerプロキシを有効にするシナリオ:
- TSO 要求の負荷が高いため、PD リーダーの CPU がボトルネックになり、TSO RPC 要求のレイテンシーが高くなります。
- TiDB クラスターには多数の TiDB インスタンスがあり、値を
tidb_tso_client_batch_max_wait_timeに増やしても、TSO RPC 要求の高レイテンシーの問題を軽減することはできません。
注記:
PD リーダーの CPU 使用率のボトルネック以外の理由 (ネットワークの問題など) で TSO RPCレイテンシーが増加するとします。この場合、TSOFollowerプロキシを有効にすると、TiDB での実行レイテンシーが増加し、クラスターの QPS パフォーマンスに影響する可能性があります。
tidb_enable_unsafe_substitute v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、式を生成された列に安全でない方法で置き換えるかどうかを制御します。デフォルト値は
OFFで、安全でない置換はデフォルトで無効になっていることを意味します。詳細については、 生成された列参照してください。
tidb_enable_vectorized_expression v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、ベクトル化された実行を有効にするかどうかを制御するために使用されます。
tidb_enable_window_function
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、ウィンドウ関数のサポートを有効にするかどうかを制御するために使用されます。ウィンドウ関数では予約キーワードが使用される場合があることに注意してください。これにより、正常に実行できる SQL ステートメントが TiDB のアップグレード後に解析できなくなる可能性があります。この場合、
tidb_enable_window_functionをOFFに設定できます。
tidb_enable_row_level_checksum v7.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 単一行データの TiCDC データ整合性検証機能を有効にするかどうかを制御するために使用されます。
tidb_enforce_mpp v5.1 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF
- このデフォルト値を変更するには、
performance.enforce-mpp構成値を変更します。
- オプティマイザのコスト見積もりを無視し、クエリ実行に TiFlash の MPP モードを強制的に使用するかどうかを制御します。値のオプションは次のとおりです。
0またはOFF。MPP モードが強制的に使用されないことを意味します (デフォルト)。1またはON場合、コスト推定は無視され、MPP モードが強制的に使用されます。この設定はtidb_allow_mpp=true場合にのみ有効になることに注意してください。
MPP はTiFlashエンジンが提供する分散コンピューティング フレームワークであり、ノード間のデータ交換を可能にし、高性能で高スループットの SQL アルゴリズムを提供します。MPP モードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。
tidb_evolve_plan_baselines v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、ベースライン進化機能を有効にするかどうかを制御するために使用されます。詳細な紹介や使用方法については、 ベースライン進化参照してください。
- ベースラインの進化がクラスターに与える影響を軽減するには、次の構成を使用します。
- 各実行プランの最大実行時間を制限するには
tidb_evolve_plan_task_max_time設定します。デフォルト値は 600 秒です。 - 時間ウィンドウを制限するには、
tidb_evolve_plan_task_start_timeとtidb_evolve_plan_task_end_time設定します。デフォルト値はそれぞれ00:00 +0000と23:59 +0000です。
- 各実行プランの最大実行時間を制限するには
tidb_evolve_plan_task_end_time v4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- デフォルト値:
23:59 +0000 - この変数は、1 日のベースライン進化の終了時刻を設定するために使用されます。
tidb_evolve_plan_task_max_time v4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
600 - 範囲:
[-1, 9223372036854775807] - 単位: 秒
- この変数は、ベースライン進化機能の各実行プランの最大実行時間を制限するために使用されます。
tidb_evolve_plan_task_start_time v4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- デフォルト値:
00:00 +0000 - この変数は、1 日のベースライン進化の開始時刻を設定するために使用されます。
tidb_executor_concurrency v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
5 - 範囲:
[1, 256] - 単位: スレッド
この変数は、次の SQL 演算子の同時実行性を (1 つの値に) 設定するために使用されます。
index lookupindex lookup joinhash joinhash aggregation(第partialフェーズとfinalフェーズ)windowprojection
tidb_executor_concurrency管理を容易にするために、次の既存のシステム変数が全体的に組み込まれています。
tidb_index_lookup_concurrencytidb_index_lookup_join_concurrencytidb_hash_join_concurrencytidb_hashagg_partial_concurrencytidb_hashagg_final_concurrencytidb_projection_concurrencytidb_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
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
60 - 範囲:
[10, 2147483647] - 単位: 秒
- この変数は、コストの高いクエリ ログを出力するかどうかを決定するしきい値を設定するために使用されます。コストの高いクエリ ログと低速なクエリ ログの違いは次のとおりです。
- ステートメントの実行後にスロー ログが出力されます。
- コストのかかるクエリ ログには、実行時間がしきい値を超えている実行中のステートメントとその関連情報が出力されます。
tidb_expensive_txn_time_threshold v7.2.0 の新機能
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
600 - 範囲:
[60, 2147483647] - 単位: 秒
- この変数は、高価なトランザクションをログに記録するためのしきい値を制御します。デフォルトでは 600 秒です。トランザクションの期間がしきい値を超え、トランザクションがコミットもロールバックもされない場合、そのトランザクションは高価なトランザクションとみなされ、ログに記録されます。
tidb_force_priority
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
NO_PRIORITY - 可能
LOW_PRIORITYDELAYEDHIGH_PRIORITYNO_PRIORITY - この変数は、TiDBサーバーで実行されるステートメントのデフォルトの優先度を変更するために使用されます。使用例としては、OLAP クエリを実行している特定のユーザーが、OLTP クエリを実行しているユーザーよりも低い優先度を受け取るようにすることが挙げられます。
- デフォルト値
NO_PRIORITY、ステートメントの優先順位が強制的に変更されないことを意味します。
注記:
v6.6.0 以降、TiDB はリソース管理サポートします。この機能を使用すると、異なるリソース グループで異なる優先度の SQL ステートメントを実行できます。これらのリソース グループに適切なクォータと優先度を構成することで、異なる優先度の SQL ステートメントのスケジュール制御を向上させることができます。リソース制御を有効にすると、ステートメントの優先度は無効になります。異なる SQL ステートメントのリソース使用を管理するには、 リソース管理使用することをお勧めします。
tidb_gc_concurrency v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- GC のロックを解決するステップ目のスレッド数を指定します。値が
-1の場合、TiDB は使用するガベージコレクションスレッドの数を自動的に決定します。
tidb_gc_enable v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - TiKV のガベージコレクションを有効にします。ガベージコレクションを無効にすると、古いバージョンの行が削除されなくなるため、システムのパフォーマンスが低下します。
tidb_gc_life_time v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
10m0s - 範囲:
[10m0s, 8760h0m0s] - 各 GC でデータが保持される時間制限 (Go Duration 形式)。GC が発生すると、現在の時刻からこの値を引いた値が安全ポイントになります。
注記:
- 頻繁に更新されるシナリオでは、
tidb_gc_life_timeに大きな値 (日数または月数) を指定すると、次のような潜在的な問題が発生する可能性があります。
- より大きなstorageの使用
- 大量の履歴データは、特に
select count(*) from tのような範囲クエリの場合、ある程度パフォーマンスに影響を与える可能性があります。tidb_gc_life_timeより長く実行されているトランザクションがある場合、GC 中、このトランザクションが実行を継続できるようにstart_ts以降のデータが保持されます。たとえば、tidb_gc_life_time10 分に設定されている場合、実行中のすべてのトランザクションのうち、最も早く開始されたトランザクションが 15 分間実行されているため、GC は最近の 15 分間のデータを保持します。
tidb_gc_max_wait_time v6.1.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
86400 - 範囲:
[600, 31536000] - 単位: 秒
- この変数は、アクティブなトランザクションが GC セーフ ポイントをブロックする最大時間を設定するために使用されます。GC の各時間中、セーフ ポイントはデフォルトで進行中のトランザクションの開始時間を超えません。アクティブなトランザクションの実行時間がこの変数値を超えない場合、実行時間がこの値を超えるまで GC セーフ ポイントはブロックされます。
tidb_gc_run_interval v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
10m0s - 範囲:
[10m0s, 8760h0m0s] - GC間隔をGo Durationの形式で指定します。たとえば、
"1h30m"などです"15m"
tidb_gc_scan_lock_mode v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
LEGACY - 可能な値:
PHYSICAL、LEGACYLEGACY: 古いスキャン方法を使用します。つまり、Green GC を無効にします。PHYSICAL: 物理スキャン方式を使用します。つまり、Green GC を有効にします。
- この変数は、GC のロック解決ステップでロックをスキャンする方法を指定します。変数値が
LEGACYに設定されている場合、TiDB は領域ごとにロックをスキャンします。値PHYSICALを使用すると、各 TiKV ノードがRaftレイヤーをバイパスしてデータを直接スキャンできるようになり、 休止状態リージョン機能が有効な場合に GC がすべての領域を起動する影響を効果的に軽減できるため、ロック解決ステップでの実行速度が向上します。
tidb_general_log
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
この変数は、 ログ内のすべての SQL 文を記録するかどうかを設定するために使用されます。この機能はデフォルトでは無効になっています。保守担当者が問題を見つけるときにすべての SQL 文をトレースする必要がある場合は、この機能を有効にすることができます。
ログ内のこの機能のすべてのレコードを表示するには、TiDB 構成項目
log.level"info"または"debug"に設定し、文字列"GENERAL_LOG"をクエリする必要があります。次の情報が記録されます。conn: 現在のセッションの ID。user: 現在のセッションユーザー。schemaVersion: 現在のスキーマ バージョン。txnStartTS: 現在のトランザクションが開始されるタイムスタンプ。forUpdateTS:悲観的トランザクション モードでは、forUpdateTSSQL 文の現在のタイムスタンプです。悲観的トランザクションで書き込み競合が発生すると、TiDB は現在実行中の SQL 文を再試行し、このタイムスタンプを更新します。再試行回数はmax-retry-countで設定できます。楽観的トランザクション モデルでは、forUpdateTStxnStartTSに相当します。isReadConsistency: 現在のトランザクション分離レベルが Read Committed (RC) であるかどうかを示します。current_db: 現在のデータベースの名前。txn_mode: トランザクション モード。値のオプションはOPTIMISTICとPESSIMISTICです。sql: 現在のクエリに対応する SQL ステートメント。
tidb_非準備プランのキャッシュサイズ
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[1, 100000] - この変数は、 準備されていないプラン キャッシュでキャッシュできる実行プランの最大数を制御します。
tidb_generate_binary_plan v6.2.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、スロー ログとステートメントの概要にバイナリ エンコードされた実行プランを生成するかどうかを制御します。
- この変数を
ONに設定すると、TiDB ダッシュボードで視覚的な実行プランを表示できます。TiDB ダッシュボードでは、この変数を有効にした後に生成された実行プランのみが視覚的に表示されることに注意してください。 SELECT tidb_decode_binary_plan('xxx...')ステートメントを実行して、バイナリ プランから特定のプランを解析できます。
tidb_gogc_tuner_max_value v7.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
500 - 範囲:
[10, 2147483647] - この変数は、GOGC チューナーが調整できる GOGC の最大値を制御するために使用されます。
tidb_gogc_tuner_min_value v7.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[10, 2147483647] - この変数は、GOGC チューナーが調整できる GOGC の最小値を制御するために使用されます。
tidb_gogc_tuner_threshold v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
0.6 - 範囲:
[0, 0.9) - この変数は、GOGC をチューニングするための最大メモリしきい値を指定します。メモリがこのしきい値を超えると、GOGC Tuner は動作を停止します。
tidb_guarantee_linearizability v5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、非同期コミットのコミット TS の計算方法を制御します。デフォルト (値
ON) では、2 フェーズ コミットは PDサーバーから新しい TS を要求し、その TS を使用して最終コミット TS を計算します。この状況では、すべての同時トランザクションの線形化可能性が保証されます。 - この変数を
OFFに設定すると、PDサーバーから TS を取得するプロセスがスキップされますが、因果一貫性のみが保証され、線形化可能性は保証されません。詳細については、ブログ投稿非同期コミット、TiDB 5.0 のトランザクションコミットのアクセラレータを参照してください。 - 因果一貫性のみが必要なシナリオでは、この変数を
OFFに設定してパフォーマンスを向上させることができます。
tidb_hash_exchange_with_new_collation
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、新しい照合順序が有効になっているクラスターで MPP ハッシュ パーティション交換演算子が生成されるかどうかを制御します。1
true演算子を生成することを意味し、false演算子を生成しないことを意味します。 - この変数は TiDB の内部操作に使用されます。この変数を設定することはお勧めしません。
tidb_hash_join_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
hash joinアルゴリズムの同時実行性を設定するために使用されます。 - 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidb_hashagg_final_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、第
finalフェーズで同時実行hash aggregationアルゴリズムを実行する同時実行性を設定するために使用されます。 - 集計関数のパラメータが異なっている場合、
HashAgg同時に実行され、それぞれpartialフェーズとfinalフェーズの 2 つのフェーズで実行されます。 - 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidbhashagg部分的同時実行性
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、第
partialフェーズで同時実行hash aggregationアルゴリズムを実行する同時実行性を設定するために使用されます。 - 集計関数のパラメータが異なっている場合、
HashAgg同時に実行され、それぞれpartialフェーズとfinalフェーズの 2 つのフェーズで実行されます。 - 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidb_historical_stats_duration v6.6.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- スタイル: 期間
- デフォルト値:
168h、7日間を意味します - この変数は、履歴統計がstorageに保持される期間を制御します。
tidb_ignore_prepared_cache_close_stmt v6.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、プリペアドステートメントキャッシュを閉じるコマンドを無視するかどうかを設定するために使用されます。
- この変数を
ONに設定すると、バイナリプロトコルのCOM_STMT_CLOSEコマンドとテキストプロトコルのDEALLOCATE PREPAREステートメントは無視されます。詳細については、COM_STMT_CLOSEコマンドとDEALLOCATE PREPAREステートメントを無視します。参照してください。
tidb_index_join_batch_size
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
25000 - 範囲:
[1, 2147483647] - 単位: 行
- この変数は、
index lookup join操作のバッチ サイズを設定するために使用されます。 - OLAP シナリオでは大きい値を使用し、OLTP シナリオでは小さい値を使用します。
tidb_index_join_double_read_penalty_cost_rate v6.6.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- デフォルト値:
0 - 範囲:
[0, 18446744073709551615] - この変数は、インデックス結合の選択にペナルティ コストを適用するかどうかを決定し、これにより、オプティマイザがインデックス結合を選択する可能性が低くなり、ハッシュ結合や tiflash 結合などの代替結合方法を選択する可能性が高くなります。
- インデックス結合を選択すると、多くのテーブル検索要求がトリガーされ、リソースが過剰に消費されます。この変数を使用すると、オプティマイザーがインデックス結合を選択する可能性を減らすことができます。
- この変数は、
tidb_cost_model_version変数が2に設定されている場合にのみ有効になります。
tidb_index_lookup_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
index lookup操作の同時実行性を設定するために使用されます。 - OLAP シナリオでは大きい値を使用し、OLTP シナリオでは小さい値を使用します。
- 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidb_index_lookup_join_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
index lookup joinアルゴリズムの同時実行性を設定するために使用されます。 - 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidb_index_merge_intersection_concurrency v6.5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
-1 - 範囲:
[1, 256] - この変数は、インデックス マージが実行する交差操作の最大同時実行性を設定します。これは、TiDB が動的プルーニング モードでパーティション テーブルにアクセスする場合にのみ有効です。実際の同時実行性は、
tidb_index_merge_intersection_concurrencyとパーティションテーブルのパーティション数のうち小さい方の値になります。 - デフォルト値
-1、値tidb_executor_concurrencyが使用されることを意味します。
tidb_index_lookup_size
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
20000 - 範囲:
[1, 2147483647] - 単位: 行
- この変数は、
index lookup操作のバッチ サイズを設定するために使用されます。 - OLAP シナリオでは大きい値を使用し、OLTP シナリオでは小さい値を使用します。
tidb_index_serial_scan_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、
serial scan操作の同時実行性を設定するために使用されます。 - OLAP シナリオでは大きい値を使用し、OLTP シナリオでは小さい値を使用します。
tidbinitチャンクサイズ
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
32 - 範囲:
[1, 32] - 単位: 行
- この変数は、実行プロセス中に初期チャンクの行数を設定するために使用されます。チャンクの行数は、単一のクエリに必要なメモリ量に直接影響します。クエリ内のすべての列の合計幅とチャンクの行数を考慮すると、単一のチャンクに必要なメモリを大まかに見積もることができます。これをエグゼキュータの同時実行性と組み合わせると、単一のクエリに必要な合計メモリを大まかに見積もることができます。単一のチャンクの合計メモリは16 MiB を超えないようにすることをお勧めします。
tidb_isolation_read_engines v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: はい
- デフォルト値:
tikv,tiflash,tidb - この変数は、TiDB がデータを読み取るときに使用できるstorageエンジン リストを設定するために使用されます。
tidb_last_ddl_info v6.0.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- タイプ: 文字列
- これは読み取り専用変数です。現在のセッション内の最後の DDL 操作の情報を取得するために TiDB で内部的に使用されます。
- "query": 最後の DDL クエリ文字列。
- "seq_num": 各 DDL 操作のシーケンス番号。DDL 操作の順序を識別するために使用されます。
tidb_last_query_info v4.0.14 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- これは読み取り専用変数です。これは、最後の DML ステートメントのトランザクション情報を照会するために TiDB で内部的に使用されます。情報には次のものが含まれます。
txn_scope: トランザクションのスコープglobalまたはlocalになります。start_ts: トランザクションの開始タイムスタンプ。for_update_ts: 前回実行された DML ステートメントのfor_update_tsこれは、テストに使用される TiDB の内部用語です。通常、この情報は無視できます。error: エラー メッセージ (ある場合)。ru_consumption: ステートメントの実行にロシアが消費されました。
tidb_last_txn_info v4.0.9 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- この変数は、現在のセッション内の最後のトランザクション情報を取得するために使用されます。これは読み取り専用変数です。トランザクション情報には次のものが含まれます。
- トランザクションの範囲。
- TS の開始とコミット。
- トランザクション コミット モード。2 フェーズ、1 フェーズ、または非同期コミットのいずれかになります。
- 非同期コミットまたは 1 フェーズ コミットから 2 フェーズ コミットへのトランザクション フォールバックの情報。
- エラーが発生しました。
tidb_last_plan_replayer_token v6.3.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- この変数は読み取り専用であり、現在のセッションの最後の
PLAN REPLAYER DUMPの実行の結果を取得するために使用されます。
tidb_load_based_replica_read_threshold v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
"1s" - 範囲:
[0s, 1h] - タイプ: 文字列
- この変数は、負荷ベースのレプリカ読み取りをトリガーするためのしきい値を設定するために使用されます。リーダー ノードの推定キュー時間がしきい値を超えると、TiDB はフォロワー ノードからのデータの読み取りを優先します。形式は、
"100ms"や"1s"などの時間間隔です。詳細については、 ホットスポットの問題のトラブルシューティング参照してください。
tidb_lock_unchanged_keys v7.1.1 および v7.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、次のシナリオで特定のキーをロックするかどうかを制御するために使用されます。値が
ONに設定されている場合、これらのキーはロックされます。値がOFFに設定されている場合、これらのキーはロックされません。 - トランザクションの一貫性と合理性を維持するために、この値を変更することは推奨されません。TiDB をアップグレードすると、これら 2 つの修正により重大なパフォーマンスの問題が発生し、ロックなしの動作が許容できる場合 (前述の問題を参照)、この変数を
OFFに設定できます。
tidb_log_file_max_days v5.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647]
- この変数は、現在の TiDB インスタンスでログが保持される最大日数を設定するために使用されます。この値は、構成ファイル内の
max-days構成の値にデフォルト設定されます。変数値の変更は、現在の TiDB インスタンスにのみ影響します。TiDB を再起動すると、変数値はリセットされ、構成値は影響を受けません。
低解像度
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、低精度 TSO 機能を有効にするかどうかを設定するために使用されます。この機能を有効にすると、新しいトランザクションは 2 秒ごとに更新されるタイムスタンプを使用してデータを読み取ります。
- 主な適用可能なシナリオは、古いデータの読み取りが許容される場合に、小さな読み取り専用トランザクションの TSO 取得のオーバーヘッドを削減することです。
tidb_max_auto_analyze_time v6.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
43200 - 範囲:
[0, 2147483647] - 単位: 秒
- この変数は、自動
ANALYZEタスクの最大実行時間を指定するために使用されます。自動ANALYZEタスクの実行時間が指定された時間を超えると、タスクは終了します。この変数の値が0の場合、自動ANALYZEタスクの最大実行時間に制限はありません。
tidb_max_bytes_before_tiflash_external_group_by v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 9223372036854775807] - この変数は、 TiFlashのハッシュ集計演算子の最大メモリ使用量を
GROUP BY単位で指定するために使用されます。メモリ使用量が指定された値を超えると、 TiFlash はハッシュ集計演算子をトリガーしてディスクに書き出します。この変数の値が-1の場合、 TiDB はこの変数をTiFlashに渡しません。この変数の値が0以上の場合にのみ、 TiDB はこの変数をTiFlashに渡します。この変数の値が0の場合、メモリ使用量が無制限であることを意味します。つまり、 TiFlashハッシュ集計演算子は書き出しをトリガーしません。詳細については、 TiFlashディスクへの書き込み参照してください。
注記:
- TiDB クラスターに複数のTiFlashノードがある場合、通常、集計は複数のTiFlashノードで分散して実行されます。この変数は、単一のTiFlashノード上の集計演算子の最大メモリ使用量を制御します。
- この変数が
-1に設定されている場合、 TiFlash は独自の構成項目max_bytes_before_external_group_byの値に基づいて集計演算子の最大メモリ使用量を決定します。
tidb_max_bytes_before_tiflash_external_join v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 9223372036854775807] - この変数は、 TiFlashのハッシュ結合演算子の最大メモリ使用量を
JOIN単位で指定するために使用されます。メモリ使用量が指定された値を超えると、 TiFlash はハッシュ結合演算子をトリガーしてディスクにスピルします。この変数の値が-1の場合、 TiDB はこの変数をTiFlashに渡しません。この変数の値が0以上の場合にのみ、 TiDB はこの変数をTiFlashに渡します。この変数の値が0の場合、メモリ使用量が無制限であることを意味します。つまり、 TiFlashハッシュ結合演算子はスピルをトリガーしません。詳細については、 TiFlashディスクへの書き込み参照してください。
注記:
- TiDB クラスターに複数のTiFlashノードがある場合、結合は通常、複数のTiFlashノードで分散して実行されます。この変数は、単一のTiFlashノードでの結合演算子の最大メモリ使用量を制御します。
- この変数が
-1に設定されている場合、 TiFlash は独自の構成項目max_bytes_before_external_joinの値に基づいて結合演算子の最大メモリ使用量を決定します。
tidb_max_bytes_before_tiflash_external_sort v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 9223372036854775807] - この変数は、 TiFlashの TopN および Sort 演算子の最大メモリ使用量をバイト単位で指定するために使用されます。メモリ使用量が指定値を超えると、 TiFlash はTopN および Sort 演算子をトリガーしてディスクに書き出します。この変数の値が
-1の場合、 TiDB はこの変数をTiFlashに渡しません。この変数の値が0以上の場合にのみ、 TiDB はこの変数をTiFlashに渡します。この変数の値が0の場合、メモリ使用量が無制限であることを意味します。つまり、 TiFlash TopN および Sort 演算子は書き出しをトリガーしません。詳細については、 TiFlashディスクへの書き込み参照してください。
注記:
- TiDB クラスターに複数のTiFlashノードがある場合、TopN と Sort は通常、複数のTiFlashノードで分散して実行されます。この変数は、単一のTiFlashノード上の TopN および Sort 演算子の最大メモリ使用量を制御します。
- この変数が
-1に設定されている場合、 TiFlash は独自の構成項目max_bytes_before_external_sortの値に基づいて、TopN 演算子と Sort 演算子の最大メモリ使用量を決定します。
tidb_max_chunk_size
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1024 - 範囲:
[32, 2147483647] - 単位: 行
- この変数は、実行プロセス中にチャンク内の最大行数を設定するために使用されます。設定値が大きすぎると、キャッシュの局所性の問題が発生する可能性があります。この変数の推奨値は 65536 以下です。チャンクの行数は、単一のクエリに必要なメモリ量に直接影響します。クエリ内のすべての列の合計幅とチャンクの行数を考慮することで、単一のチャンクに必要なメモリを大まかに見積もることができます。これをエグゼキュータの同時実行性と組み合わせることで、単一のクエリに必要な合計メモリを大まかに見積もることができます。単一のチャンクの合計メモリは16 MiB を超えないようにすることをお勧めします。クエリに大量のデータが含まれ、単一のチャンクではすべてのデータを処理できない場合、TiDB はそれを複数回処理し、チャンク サイズが
tidb_init_chunk_sizeから始まり、チャンク サイズがtidb_max_chunk_sizeに達するまで、処理の反復ごとにチャンク サイズを 2 倍にします。
tidb_max_delta_schema_count v2.1.18 および v3.0.5 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1024 - 範囲:
[100, 16384] - この変数は、キャッシュできるスキーマ バージョン (対応するバージョン用に変更されたテーブル ID) の最大数を設定するために使用されます。値の範囲は 100 ~ 16384 です。
tidb_max_paging_size v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
50000 - 範囲:
[1, 9223372036854775807] - 単位: 行
- この変数は、コプロセッサ ページング要求プロセス中の最大行数を設定するために使用されます。この変数を小さすぎる値に設定すると、TiDB と TiKV 間の RPC カウントが増加し、大きすぎる値に設定すると、データのロードや完全なテーブル スキャンなどの場合にメモリ使用量が過剰になります。この変数のデフォルト値では、OLAP シナリオよりも OLTP シナリオでパフォーマンスが向上します。アプリケーションがstorageエンジンとして TiKV のみを使用する場合は、OLAP ワークロード クエリを実行するときにこの変数の値を増やすことを検討してください。これにより、パフォーマンスが向上する可能性があります。
tidb_max_tiflash_threads v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 256] - 単位: スレッド
- この変数は、 TiFlash がリクエストを実行するための最大同時実行数を設定するために使用されます。デフォルト値は
-1で、このシステム変数が無効であり、最大同時実行数はTiFlash構成profiles.default.max_threadsの設定に依存することを示します。値が0の場合、最大スレッド数はTiFlashによって自動的に設定されます。
tidb_mem_oom_action v6.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
CANCEL - 可能な値:
CANCEL、LOG
- 単一の 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 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 9223372036854775807] - 単位: バイト
- この変数は、TiDB 統計更新の最大メモリ使用量を制御します。このようなメモリ使用量は、手動で
ANALYZE TABLE実行した場合と、TiDB がバックグラウンドでタスクを自動的に分析した場合に発生します。合計メモリ使用量がこのしきい値を超えると、ユーザーが実行したANALYZE終了し、より低いサンプリング レートを試すか、後で再試行するように通知するエラー メッセージが報告されます。メモリしきい値を超えたために TiDB バックグラウンドの自動タスクが終了し、使用されているサンプリング レートが既定値よりも高い場合、TiDB は既定のサンプリング レートを使用して更新を再試行します。この変数値が負またはゼロの場合、TiDB は手動更新タスクと自動更新タスクの両方のメモリ使用量を制限しません。
注記:
auto_analyze、TiDB 起動構成ファイルでrun-auto-analyzeが有効になっている場合にのみ、TiDB クラスターでトリガーされます。
tidb_mem_quota_apply_cache v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
33554432(32 MiB) - 範囲:
[0, 9223372036854775807] - 単位: バイト
- この変数は、
Apply演算子のローカル キャッシュのメモリ使用量しきい値を設定するために使用されます。 Apply演算子のローカル キャッシュは、Apply演算子の計算を高速化するために使用されます。変数を0に設定すると、Applyキャッシュ機能を無効にすることができます。
tidb_mem_quota_binding_cache v6.0.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
67108864 - 範囲:
[0, 2147483647] - 単位: バイト
- この変数は、バインディングのキャッシュに使用されるメモリのしきい値を設定するために使用されます。
- システムが過剰なバインディングを作成またはキャプチャし、メモリ領域が過剰に使用されると、TiDB はログに警告を返します。この場合、キャッシュは利用可能なすべてのバインディングを保持できないか、どのバインディングを保存するかを決定することができません。このため、一部のクエリではバインディングが失われる可能性があります。この問題に対処するには、この変数の値を増やすことができます。これにより、バインディングのキャッシュに使用されるメモリが増加します。このパラメータを変更した後、
admin reload bindings実行してバインディングを再ロードし、変更を検証する必要があります。
tidb_mem_quota_query
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1073741824(1 GiB) - 範囲:
[-1, 9223372036854775807] - 単位: バイト
- TiDB v6.1.0 より前のバージョンでは、これはセッション スコープ変数であり、初期値として
tidb.tomlからmem-quota-queryの値を使用します。v6.1.0 以降では、tidb_mem_quota_querySESSION | GLOBALスコープ変数です。 - TiDB v6.5.0 より前のバージョンでは、この変数はクエリのメモリクォータのしきい値を設定するために使用されます。実行中のクエリのメモリクォータがしきい値を超えると、TiDB は
tidb_mem_oom_actionで定義された操作を実行します。 - TiDB v6.5.0 以降のバージョンでは、この変数はセッションのメモリクォータのしきい値を設定するために使用されます。実行中のセッションのメモリクォータがしきい値を超えると、TiDB は
tidb_mem_oom_actionで定義された操作を実行します。TiDB v6.5.0 以降では、セッションのメモリ使用量には、セッション内のトランザクションによって消費されるメモリが含まれることに注意してください。TiDB v6.5.0 以降のバージョンでのトランザクションメモリ使用量の制御動作については、txn-total-size-limit参照してください。 - 変数値を
0または-1に設定すると、メモリしきい値は正の無限大になります。 128 より小さい値を設定すると、値はデフォルトで128になります。
tidb_memory_debug_mode_alarm_ratio
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0 - この変数は、TiDBメモリデバッグ モードで許可されるメモリ統計エラー値を表します。
- この変数は TiDB の内部テストに使用されます。この変数を設定することはお勧めしません。
tidb_memory_debug_mode_min_heap_inuse
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - この変数は TiDB の内部テストに使用されます。この変数を設定することは推奨されません。この変数を有効にすると、TiDB のパフォーマンスに影響します。
- このパラメータを設定すると、TiDB はメモリデバッグ モードに入り、メモリ追跡の精度を分析します。TiDB は、後続の SQL ステートメントの実行中に頻繁に GC をトリガーし、実際のメモリ使用量とメモリ統計を比較します。現在のメモリ使用量が
tidb_memory_debug_mode_min_heap_inuseより大きく、メモリ統計エラーがtidb_memory_debug_mode_alarm_ratioを超える場合、TiDB は関連するメモリ情報をログとファイルに出力します。
tidb_メモリ使用量アラーム比率
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0.7 - 範囲:
[0.0, 1.0]
この変数は、tidb-serverメモリアラームをトリガーするメモリ使用率を設定します。デフォルトでは、TiDB のメモリ使用量が合計メモリの 70% を超え、 警報条件のいずれかが満たされると、TiDB はアラーム ログを出力。
この変数が
0または1に設定されている場合、メモリしきい値アラーム機能は無効になります。この変数が
0より大きく1より小さい値に設定されている場合、メモリしきい値アラーム機能が有効になっていることを意味します。- システム変数
tidb_server_memory_limitの値が0の場合、メモリアラームしきい値はtidb_memory-usage-alarm-ratio * system memory sizeになります。 - システム変数
tidb_server_memory_limitの値が 0 より大きい値に設定されている場合、メモリアラームしきい値はtidb_memory-usage-alarm-ratio * tidb_server_memory_limitになります。
- システム変数
tidb_memory_usage_alarm_keep_record_num v6.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
5 - 範囲:
[1, 10000] - tidb-server のメモリ使用量がメモリアラームしきい値を超えてアラームをトリガーすると、TiDB はデフォルトで最近の 5 つのアラーム中に生成されたステータス ファイルのみを保持します。この変数を使用してこの数を調整できます。
tidb_merge_join_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- 範囲:
[1, 256] - デフォルト値:
1 - この変数は、クエリが実行されるときに
MergeJoin演算子の同時実行性を設定します。 - この変数を設定することは推奨されません。この変数の値を変更すると、データの正確性に問題が発生する可能性があります。
tidb_merge_partition_stats_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
1 - この変数は、TiDB がパーティションテーブルを分析するときに、パーティションテーブルの統計をマージする同時実行性を指定します。
tidb_enable_async_merge_global_stats v7.5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON。TiDB を v7.5.0 より前のバージョンから v7.5.0 以降のバージョンにアップグレードする場合、デフォルト値はOFFなります。 - この変数は、OOM の問題を回避するために TiDB がグローバル統計を非同期的にマージするために使用されます。
tidb_metric_query_range_duration v4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
60 - 範囲:
[10, 216000] - 単位: 秒
- この変数は、クエリ
METRICS_SCHEMA時に生成される Prometheus ステートメントの範囲期間を設定するために使用されます。
tidb_metric_query_step v4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
60 - 範囲:
[10, 216000] - 単位: 秒
- この変数は、クエリ
METRICS_SCHEMA時に生成される Prometheus ステートメントのステップを設定するために使用されます。
tidb_min_paging_size v6.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
128 - 範囲:
[1, 9223372036854775807] - 単位: 行
- この変数は、コプロセッサ ページング要求プロセス中の最小行数を設定するために使用されます。この変数を小さすぎる値に設定すると、TiDB と TiKV 間の RPC 要求数が増加し、大きすぎる値に設定すると、IndexLookup と Limit を使用してクエリを実行するときにパフォーマンスが低下する可能性があります。この変数のデフォルト値では、OLAP シナリオよりも OLTP シナリオでパフォーマンスが向上します。アプリケーションがstorageエンジンとして TiKV のみを使用する場合は、OLAP ワークロード クエリを実行するときにこの変数の値を増やすことを検討してください。これにより、パフォーマンスが向上する可能性があります。

この図に示すように、 tidb_enable_paging有効になっている場合、 tidb_min_paging_sizeとtidb_max_paging_sizeの設定によって TPCH のパフォーマンスが影響を受けます。縦軸は実行時間で、小さいほど優れています。
tidb_mpp_store_fail_ttl
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
60s - 新しく起動したTiFlashノードはサービスを提供しません。クエリが失敗しないように、TiDB は tidb-server がクエリを送信することを新しく起動したTiFlashノードに制限します。この変数は、新しく起動したTiFlashノードにリクエストが送信されない時間範囲を示します。
tidb_multi_statement_mode v4.0.11 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
OFF - 可能な
WARNONOFF - この変数は、
COM_QUERY呼び出しで複数のクエリを実行できるかどうかを制御します。 - SQL インジェクション攻撃の影響を軽減するために、TiDB ではデフォルトで
COM_QUERY呼び出しで複数のクエリが実行されないようにするようになりました。この変数は、以前のバージョンの TiDB からのアップグレード パスの一部として使用することを目的としています。次の動作が適用されます。
| クライアント設定 | tidb_multi_statement_mode値 | 複数のステートメントが許可されますか? |
|---|---|---|
| 複数のステートメント = ON | オフ | はい |
| 複数のステートメント = ON | の上 | はい |
| 複数のステートメント = ON | 警告 | はい |
| 複数のステートメント = オフ | オフ | いいえ |
| 複数のステートメント = オフ | の上 | はい |
| 複数のステートメント = オフ | 警告 | はい(+警告が返されました) |
注記:
安全だと考えられるのは、デフォルト値の
OFFだけです。アプリケーションが TiDB の以前のバージョン用に特別に設計されている場合は、設定tidb_multi_statement_mode=ON必要になることがあります。アプリケーションで複数のステートメントのサポートが必要な場合は、tidb_multi_statement_modeオプションではなく、クライアント ライブラリによって提供される設定を使用することをお勧めします。例:
- go-sql-ドライバー (
multiStatements)- コネクタ/J (
allowMultiQueries)- PHP mysqli (
mysqli_multi_query)
tidb_nontransactional_ignore_error v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非トランザクション DML ステートメントでエラーが発生した場合に、すぐにエラーを返すかどうかを指定します。
- 値を
OFFに設定すると、非トランザクション DML ステートメントは最初のエラーで直ちに停止し、エラーを返します。後続のバッチはすべてキャンセルされます。 - 値を
ONに設定した場合、バッチでエラーが発生すると、すべてのバッチが実行されるまで後続のバッチが引き続き実行されます。実行プロセス中に発生したすべてのエラーは、結果にまとめて返されます。
tidb_opt_agg_push_down
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、オプティマイザが集計関数を Join、Projection、および UnionAll の前の位置にプッシュダウンする最適化操作を実行するかどうかを設定するために使用されます。
- クエリで集計操作が遅い場合は、変数値を ON に設定できます。
tidboptブロードキャストカルテシアン結合
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[0, 2] - ブロードキャスト カテシアン結合を許可するかどうかを示します。
0ブロードキャスト カテシアン結合が許可されないことを意味します。1tidb_broadcast_join_threshold_countに基づいて許可されることを意味します。2テーブル サイズがしきい値を超えても常に許可されることを意味します。- この変数は TiDB で内部的に使用されるため、その値を変更することは推奨されません。
tidb_opt_concurrency_factor
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 18446744073709551615] - デフォルト値:
3.0 - TiDB でGolang goroutine を開始する際の CPU コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_copcpu_factor
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 18446744073709551615] - デフォルト値:
3.0 - TiKVコプロセッサーが1 行を処理するための CPU コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidbopt相関係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[0, 2147483647] - 列順序の相関に基づいて行数を推定する方法が利用できない場合は、ヒューリスティック推定方法が使用されます。この変数は、ヒューリスティック方法の動作を制御するために使用されます。
- 値が 0 の場合、ヒューリスティック手法は使用されません。
- 値が0より大きい場合:
- 値が大きいほど、ヒューリスティックな方法でインデックス スキャンが使用される可能性が高くなります。
- 値が小さいほど、ヒューリスティックな方法でテーブルスキャンが使用される可能性が高くなります。
tidbopt相関しきい値
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- デフォルト値:
0.9 - 範囲:
[0, 1] - この変数は、列順序の相関関係を使用して行数を推定することを有効にするかどうかを決定するしきい値を設定するために使用されます。現在の列と
handle列目の順序の相関関係がしきい値を超えると、この方法が有効になります。
tidb_opt_cpu_factor
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
3.0 - TiDB が 1 行を処理するための CPU コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_derive_topn v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - ウィンドウ関数から TopN または Limit を導出するの最適化ルールを有効にするかどうかを制御します。
tidb_opt_desc_factor
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 18446744073709551615] - デフォルト値:
3.0 - TiKV がディスクから 1 行を降順でスキャンするのにかかるコストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidboptディスク係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 18446744073709551615] - デフォルト値:
1.5 - TiDB が一時ディスクから 1 バイトのデータを読み書きするための I/O コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_distinct_agg_push_down
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
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.aがHashAgg_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
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、オプティマイザが列順序の相関に基づいて行数を推定するかどうかを制御するために使用されます。
tidb_opt_enable_hash_join v6.5.6、v7.1.2、v7.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、オプティマイザがテーブルに対してハッシュ結合を選択するかどうかを制御するために使用されます。デフォルトの値は
ONです。OFFに設定すると、他の結合アルゴリズムが利用できない場合を除き、オプティマイザは実行プランを生成するときにハッシュ結合を選択しません。 - システム変数
tidb_opt_enable_hash_joinとHASH_JOINヒントの両方が設定されている場合は、HASH_JOINヒントが優先されます。tidb_opt_enable_hash_joinがOFFに設定されている場合でも、クエリでHASH_JOINヒントを指定すると、TiDB オプティマイザーはハッシュ結合プランを適用します。
tidb_opt_enable_non_eval_scalar_subquery v7.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
EXPLAIN文が最適化段階で展開できる定数サブクエリの実行を無効にするかどうかを制御するために使用されます。この変数がOFFに設定されている場合、EXPLAIN文は最適化段階でサブクエリを事前に展開します。この変数がONに設定されている場合、EXPLAIN文は最適化段階でサブクエリを展開しません。詳細については、 サブクエリの拡張を無効にする参照してください。
tidb_opt_enable_late_materialization v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、 TiFlash の遅い実体化機能を有効にするかどうかを制御するために使用されます。TiFlashの遅延マテリアライゼーションは高速スキャンモードでは有効にならないことに注意してください。
- この変数を
OFFに設定してTiFlash の遅延マテリアライゼーション機能を無効にした場合、フィルター条件 (WHERE句) を含むSELECTステートメントを処理するために、 TiFlash はフィルター処理の前に必要な列のすべてのデータをスキャンします。この変数をONに設定してTiFlash の遅延マテリアライゼーション機能を有効にすると、 TiFlash は最初に TableScan 演算子にプッシュダウンされたフィルター条件に関連する列データをスキャンし、条件を満たす行をフィルター処理してから、これらの行の他の列のデータをスキャンしてさらに計算できるため、データ処理の IO スキャンと計算が削減されます。
tidb_opt_enable_mpp_shared_cte_execution v7.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、非再帰共通テーブル式 (CTE) TiFlash MPP で実行できるかどうかを制御します。デフォルトでは、この変数が無効になっている場合、CTE は TiDB で実行されますが、この機能を有効にした場合と比較してパフォーマンスの差が大きくなります。
tidb_opt_fix_control v6.5.3 および v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 文字列
- デフォルト値:
"" - この変数は、オプティマイザの内部動作を制御するために使用されます。
- オプティマイザーの動作は、ユーザー シナリオまたは SQL ステートメントによって異なる場合があります。この変数により、オプティマイザーをより細かく制御できるようになり、アップグレード後にオプティマイザーの動作変更によって発生するパフォーマンスの低下を防ぐことができます。
- より詳しい紹介についてはオプティマイザー修正コントロール参照してください。
tidb_opt_force_inline_cte v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、セッション全体の共通テーブル式 (CTE) がインライン化されるかどうかを制御するために使用されます。デフォルト値は
OFFで、これは CTE のインライン化がデフォルトでは強制されないことを意味します。ただし、MERGE()ヒントを指定することにより、CTE をインライン化することはできます。変数がONに設定されている場合、このセッション内のすべての CTE (再帰 CTE を除く) は強制的にインライン化されます。
tidb_opt_advanced_join_hint v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、
HASH_JOIN()ヒントやMERGE_JOIN()ヒントなどの結合方法ヒントが、LEADING()ヒントの使用を含む結合したテーブルの再配置の最適化プロセスに影響を与えるかどうかを制御するために使用されます。デフォルト値はONで、影響を与えないことを意味します。OFFに設定すると、結合方法ヒントとLEADING()ヒントの両方が同時に使用されるシナリオで競合が発生する可能性があります。
注記:
v7.0.0 より前のバージョンの動作は、この変数を
OFFに設定した場合の動作と一致します。以前のバージョンから v7.0.0 以降のクラスターにアップグレードする場合、前方互換性を確保するために、この変数はOFFに設定されます。より柔軟なヒント動作を得るには、パフォーマンスの低下がないという条件で、この変数をONに切り替えることを強くお勧めします。
tidb_opt_insubq_to_join_and_agg
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: はい
タイプ: ブール値
デフォルト値:
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列目のuniqueとnot nullに制限されている場合、集計なしで次のステートメントを使用できます。select t.* from t, t1 where t.a=t1.aa;
tidb_opt_join_reorder_threshold
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - この変数は、TiDB 結合したテーブルの再配置アルゴリズムの選択を制御するために使用されます。Join 結合したテーブルの再配置に参加するノードの数がこのしきい値より大きい場合、TiDB は貪欲アルゴリズムを選択し、このしきい値より小さい場合、TiDB は動的プログラミング アルゴリズムを選択します。
- 現在、OLTP クエリの場合、デフォルト値を維持することをお勧めします。OLAP クエリの場合、OLAP シナリオでより適切な接続順序を得るために、変数値を 10 ~ 15 に設定することをお勧めします。
tidb_opt_limit_push_down_threshold
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[0, 2147483647] - この変数は、Limit または TopN 演算子を TiKV まで押し下げるかどうかを決定するしきい値を設定するために使用されます。
- Limit または TopN 演算子の値がこのしきい値以下の場合、これらの演算子は強制的に TiKV にプッシュダウンされます。この変数は、誤った推定により Limit または TopN 演算子を TiKV にプッシュダウンできない問題を解決します。
tidboptメモリ係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
0.001 - TiDB が 1 行を格納するためのメモリコストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_mpp_outer_join_fixed_build_side v5.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - 変数値が
ONの場合、左結合演算子は常に内部テーブルを構築側として使用し、右結合演算子は常に外部テーブルを構築側として使用します。値をOFFに設定すると、外部結合演算子はどちらの側のテーブルも構築側として使用できます。
tidboptネットワーク係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
1.0 - ネットワークを介して 1 バイトのデータを転送する際の純コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_objective v7.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 列挙
- デフォルト値:
moderate - 可能な値:
moderate、determinate - この変数は、オプティマイザの目的を制御します。1
moderate、TiDB v7.4.0 より前のバージョンのデフォルトの動作を維持し、オプティマイザはより多くの情報を使用して、より優れた実行プランを生成しようとしますdeterminateモードはより保守的になり、実行プランがより安定する傾向があります。 - リアルタイム統計は、DML ステートメントに基づいて自動的に更新される行の合計数と変更された行の数です。この変数が
moderate(デフォルト) に設定されている場合、TiDB はリアルタイム統計に基づいて実行プランを生成します。この変数がdeterminateに設定されている場合、TiDB は実行プランの生成にリアルタイム統計を使用しません。これにより、実行プランがより安定します。 - 長期にわたって安定した OLTP ワークロードの場合、またはユーザーが既存の実行プランに満足している場合は、予期しない実行プランの変更の可能性を減らすために
determinateモードを使用することをお勧めします。また、統計が変更されないようにし、実行プランをさらに安定させるためにLOCK STATSモードを使用することもできます。
tidb_opt_ordering_index_selectivity_threshold v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- デフォルト値:
0 - 範囲:
[0, 1] - この変数は、SQL ステートメントにフィルター条件を持つ句が
ORDER BYまたはLIMITある場合に、オプティマイザーがインデックスを選択する方法を制御するために使用されます。 - このようなクエリの場合、オプティマイザーは、
ORDER BYとLIMIT句を満たす対応するインデックスを選択することを検討します (このインデックスがフィルター条件を満たしていない場合でも)。ただし、データ分散の複雑さにより、このシナリオではオプティマイザーが最適でないインデックスを選択する可能性があります。 - この変数はしきい値を表します。フィルタリング条件を満たすインデックスが存在し、その選択性推定値がこのしきい値より低い場合、オプティマイザは
ORDER BYとLIMIT満たすために使用されるインデックスを選択しません。代わりに、フィルタリング条件を満たすインデックスを優先します。 - たとえば、変数が
0に設定されている場合、オプティマイザはデフォルトの動作を維持します。1に設定されている場合、オプティマイザは常にフィルタ条件を満たすインデックスの選択を優先し、ORDER BYとLIMIT句の両方を満たすインデックスの選択を回避します。 - 次の例では、テーブル
tには合計 1,000,000 行があります。列bのインデックスを使用する場合、推定行数は約 8,748 なので、選択性推定値は約 0.0087 になります。デフォルトでは、オプティマイザは列aのインデックスを選択します。ただし、この変数を 0.01 に設定すると、列bのインデックスの選択性 (0.0087) は 0.01 未満になるため、オプティマイザは列bのインデックスを選択します。
> EXPLAIN SELECT * FROM t WHERE b <= 9000 ORDER BY a LIMIT 1;
+-----------------------------------+---------+-----------+----------------------+--------------------+
| id | estRows | task | access object | operator info |
+-----------------------------------+---------+-----------+----------------------+--------------------+
| Limit_12 | 1.00 | root | | offset:0, count:1 |
| └─Projection_25 | 1.00 | root | | test.t.a, test.t.b |
| └─IndexLookUp_24 | 1.00 | root | | |
| ├─IndexFullScan_21(Build) | 114.30 | cop[tikv] | table:t, index:ia(a) | keep order:true |
| └─Selection_23(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) |
| └─TableRowIDScan_22 | 114.30 | cop[tikv] | table:t | keep order:false |
+-----------------------------------+---------+-----------+----------------------+--------------------+
> SET SESSION tidb_opt_ordering_index_selectivity_threshold = 0.01;
> EXPLAIN SELECT * FROM t WHERE b <= 9000 ORDER BY a LIMIT 1;
+----------------------------------+---------+-----------+----------------------+-------------------------------------+
| id | estRows | task | access object | operator info |
+----------------------------------+---------+-----------+----------------------+-------------------------------------+
| TopN_9 | 1.00 | root | | test.t.a, offset:0, count:1 |
| └─IndexLookUp_20 | 1.00 | root | | |
| ├─IndexRangeScan_17(Build) | 8748.62 | cop[tikv] | table:t, index:ib(b) | range:[-inf,9000], keep order:false |
| └─TopN_19(Probe) | 1.00 | cop[tikv] | | test.t.a, offset:0, count:1 |
| └─TableRowIDScan_18 | 8748.62 | cop[tikv] | table:t | keep order:false |
+----------------------------------+---------+-----------+----------------------+-------------------------------------+
tidb_opt_prefer_range_scan v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
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_prefix_index_single_scan v6.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
ON - この変数は、不要なテーブル検索を回避し、クエリのパフォーマンスを向上させるために、TiDB オプティマイザーが一部のフィルター条件をプレフィックス インデックスにプッシュダウンするかどうかを制御します。
- この変数値が
ONに設定されている場合、一部のフィルター条件がプレフィックス インデックスにプッシュダウンされます。col列目がテーブル内のインデックス プレフィックス列であるとします。クエリ内のcol is nullまたはcol is not null条件は、テーブル検索のフィルター条件ではなく、インデックスのフィルター条件として処理されるため、不要なテーブル検索が回避されます。
tidb_opt_prefix_index_single_scanの使用例
プレフィックス インデックスを持つテーブルを作成します。
CREATE TABLE t (a INT, b VARCHAR(10), c INT, INDEX idx_a_b(a, b(5)));
無効化tidb_opt_prefix_index_single_scan :
SET tidb_opt_prefix_index_single_scan = 'OFF';
次のクエリでは、実行プランはプレフィックス インデックスidx_a_bを使用しますが、テーブル検索が必要です ( IndexLookUp演算子が表示されます)。
EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL;
+-------------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
| HashAgg | 1.00 | root | | funcs:count(Column#8)->Column#5 |
| └─IndexLookUp | 1.00 | root | | |
| ├─IndexRangeScan(Build) | 99.90 | cop[tikv] | table:t, index:idx_a_b(a, b) | range:[1 -inf,1 +inf], keep order:false, stats:pseudo |
| └─HashAgg(Probe) | 1.00 | cop[tikv] | | funcs:count(1)->Column#8 |
| └─Selection | 99.90 | cop[tikv] | | not(isnull(test.t.b)) |
| └─TableRowIDScan | 99.90 | cop[tikv] | table:t | keep order:false, stats:pseudo |
+-------------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
6 rows in set (0.00 sec)
有効化tidb_opt_prefix_index_single_scan :
SET tidb_opt_prefix_index_single_scan = 'ON';
この変数を有効にすると、次のクエリでは実行プランでプレフィックス インデックスidx_a_bが使用されますが、テーブル検索は必要ありません。
EXPLAIN FORMAT='brief' SELECT COUNT(1) FROM t WHERE a = 1 AND b IS NOT NULL;
+--------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
| id | estRows | task | access object | operator info |
+--------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
| StreamAgg | 1.00 | root | | funcs:count(Column#7)->Column#5 |
| └─IndexReader | 1.00 | root | | index:StreamAgg |
| └─StreamAgg | 1.00 | cop[tikv] | | funcs:count(1)->Column#7 |
| └─IndexRangeScan | 99.90 | cop[tikv] | table:t, index:idx_a_b(a, b) | range:[1 -inf,1 +inf], keep order:false, stats:pseudo |
+--------------------------+---------+-----------+------------------------------+-------------------------------------------------------+
4 rows in set (0.00 sec)
tidb_opt_projection_push_down v6.1.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - オプティマイザが TiKV またはTiFlashコプロセッサに
Projectionプッシュダウンできるようにするかどうかを指定します。
tidb_opt_range_max_size v6.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
67108864(64 MiB) - 範囲:
[0, 9223372036854775807] - 単位: バイト
- この変数は、スキャン範囲を構築するためにオプティマイザが使用するメモリの上限を設定するために使用されます。変数値が
0の場合、スキャン範囲を構築するためのメモリ制限はありません。正確なスキャン範囲を構築することで制限を超えるメモリが消費される場合、オプティマイザはより緩やかなスキャン範囲 ([[NULL,+inf]]など) を使用します。実行プランで正確なスキャン範囲を使用しない場合は、この変数の値を増やして、オプティマイザが正確なスキャン範囲を構築できるようにすることができます。
この変数の使用例は次のとおりです。
tidb_opt_range_max_size使用例
この変数のデフォルト値をビュー。結果から、オプティマイザーがスキャン範囲を構築するために最大 64 MiB のメモリを使用していることがわかります。
SELECT @@tidb_opt_range_max_size;
+----------------------------+
| @@tidb_opt_range_max_size |
+----------------------------+
| 67108864 |
+----------------------------+
1 row in set (0.01 sec)
EXPLAIN SELECT * FROM t use index (idx) WHERE a IN (10,20,30) AND b IN (40,50,60);
64 MiB のメモリ上限では、次の実行プランの結果に示すように、オプティマイザは次の正確なスキャン範囲[10 40,10 40], [10 50,10 50], [10 60,10 60], [20 40,20 40], [20 50,20 50], [20 60,20 60], [30 40,30 40], [30 50,30 50], [30 60,30 60]構築します。
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| IndexLookUp_7 | 0.90 | root | | |
| ├─IndexRangeScan_5(Build) | 0.90 | cop[tikv] | table:t, index:idx(a, b) | range:[10 40,10 40], [10 50,10 50], [10 60,10 60], [20 40,20 40], [20 50,20 50], [20 60,20 60], [30 40,30 40], [30 50,30 50], [30 60,30 60], keep order:false, stats:pseudo |
| └─TableRowIDScan_6(Probe) | 0.90 | cop[tikv] | table:t | keep order:false, stats:pseudo |
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
ここで、スキャン範囲を構築するためのオプティマイザーのメモリ使用量の上限を 1500 バイトに設定します。
SET @@tidb_opt_range_max_size = 1500;
Query OK, 0 rows affected (0.00 sec)
EXPLAIN SELECT * FROM t USE INDEX (idx) WHERE a IN (10,20,30) AND b IN (40,50,60);
1500 バイトのメモリ制限では、オプティマイザはより緩やかなスキャン範囲[10,10], [20,20], [30,30]構築し、正確なスキャン範囲を構築するために必要なメモリ使用量がtidb_opt_range_max_sizeの制限を超えたことを警告を使用してユーザーに通知します。
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------+
| IndexLookUp_8 | 0.09 | root | | |
| ├─Selection_7(Build) | 0.09 | cop[tikv] | | in(test.t.b, 40, 50, 60) |
| │ └─IndexRangeScan_5 | 30.00 | cop[tikv] | table:t, index:idx(a, b) | range:[10,10], [20,20], [30,30], keep order:false, stats:pseudo |
| └─TableRowIDScan_6(Probe) | 0.09 | cop[tikv] | table:t | keep order:false, stats:pseudo |
+-------------------------------+---------+-----------+--------------------------+-----------------------------------------------------------------+
4 rows in set, 1 warning (0.00 sec)
SHOW WARNINGS;
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1105 | Memory capacity of 1500 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
次に、メモリ使用量の上限を 100 バイトに設定します。
set @@tidb_opt_range_max_size = 100;
Query OK, 0 rows affected (0.00 sec)
EXPLAIN SELECT * FROM t USE INDEX (idx) WHERE a IN (10,20,30) AND b IN (40,50,60);
100 バイトのメモリ制限では、オプティマイザはIndexFullScan選択し、正確なスキャン範囲を構築するために必要なメモリがtidb_opt_range_max_sizeの制限を超えていることを警告を使用してユーザーに通知します。
+-------------------------------+----------+-----------+--------------------------+----------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------+----------+-----------+--------------------------+----------------------------------------------------+
| IndexLookUp_8 | 8000.00 | root | | |
| ├─Selection_7(Build) | 8000.00 | cop[tikv] | | in(test.t.a, 10, 20, 30), in(test.t.b, 40, 50, 60) |
| │ └─IndexFullScan_5 | 10000.00 | cop[tikv] | table:t, index:idx(a, b) | keep order:false, stats:pseudo |
| └─TableRowIDScan_6(Probe) | 8000.00 | cop[tikv] | table:t | keep order:false, stats:pseudo |
+-------------------------------+----------+-----------+--------------------------+----------------------------------------------------+
4 rows in set, 1 warning (0.00 sec)
SHOW WARNINGS;
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1105 | Memory capacity of 100 bytes for 'tidb_opt_range_max_size' exceeded when building ranges. Less accurate ranges such as full range are chosen |
+---------+------+---------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
tidboptスキャン係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
1.5 - TiKV がディスクから 1 行のデータを昇順でスキャンするのにかかるコストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_seek_factor
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
20 - TiDB が TiKV からデータを要求するための起動コストを示します。この変数はコストモデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_skew_distinct_agg v6.2.0 の新機能
注記:
この変数を有効にしてクエリ パフォーマンスを最適化すると、 TiFlashに対してのみ効果があります。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、オプティマイザが
DISTINCT含む集計関数を2 レベルの集計関数に書き換えるかどうか (たとえば、SELECT b, COUNT(DISTINCT a) FROM t GROUP BY bをSELECT b, COUNT(a) FROM (SELECT b, a FROM t GROUP BY b, a) t GROUP BY bに書き換える) を設定します。集計列に重大な偏りがあり、DISTINCT列に多くの異なる値がある場合、この書き換えによってクエリ実行時のデータ偏りを回避し、クエリのパフォーマンスを向上させることができます。
tidb_opt_three_stage_distinct_agg v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
ON - この変数は、MPP モードで
COUNT(DISTINCT)集約を 3 段階の集約に書き換えるかどうかを指定します。 - この変数は現在、
COUNT(DISTINCT)を 1 つだけ含む集計に適用されます。
tidbopt_tiflash同時実行係数
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: フロート
- 範囲:
[0, 2147483647] - デフォルト値:
24.0 - TiFlash計算の同時実行数を示します。この変数はコスト モデルで内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_write_row_id
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、
INSERT、REPLACE、およびUPDATEステートメントが_tidb_rowid列で動作できるようにするかどうかを制御するために使用されます。この変数は、TiDB ツールを使用してデータをインポートする場合にのみ使用できます。
tidb_optimizer_selectivity_level
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - この変数は、オプティマイザの推定ロジックの反復を制御します。この変数の値を変更すると、オプティマイザの推定ロジックが大きく変わります。現在、有効な値は
0のみです。他の値に設定することはお勧めしません。
tidb_partition_prune_mode v5.1 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 列挙
- デフォルト値:
dynamic - 可能
dynamicdynamic-onlystatic-onlystatic - パーティション化されたテーブルに
dynamicモードとstaticモードのどちらを使用するかを指定します。動的パーティション分割は、完全なテーブル レベルの統計、つまり GlobalStats が収集された後にのみ有効になることに注意してください。GlobalStats が収集される前は、TiDB は代わりにstaticモードを使用します。GlobalStats の詳細については、 動的プルーニングモードでパーティションテーブルの統計を収集する参照してください。動的プルーニング モードの詳細については、 パーティションテーブルの動的プルーニングモード参照してください。
tidb_persist_analyze_options v5.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、 構成の永続性を分析する機能を有効にするかどうかを制御します。
tidb_pessimistic_txn_fair_locking v7.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - 悲観的トランザクションに拡張悲観的ロック ウェイクアップ モデルを使用するかどうかを決定します。このモデルは、悲観的ロックの単一ポイント競合シナリオで悲観的トランザクションのウェイクアップ順序を厳密に制御し、不要なウェイクアップを回避します。これにより、既存のウェイクアップ メカニズムのランダム性によってもたらされる不確実性が大幅に軽減されます。ビジネス シナリオで単一ポイントの悲観的ロック競合が頻繁に発生し (同じデータ行が頻繁に更新されるなど)、ステートメントの再試行が頻繁に発生したり、テールレイテンシーが長くなったり、
pessimistic lock retry limit reachedエラーが時々発生したりする場合は、この変数を有効にして問題を解決してみてください。 - この変数は、v7.0.0 より前のバージョンから v7.0.0 以降のバージョンにアップグレードされた TiDB クラスターではデフォルトで無効になっています。
注記:
- 特定のビジネス シナリオによっては、このオプションを有効にすると、ロックの競合が頻繁に発生するトランザクションで、ある程度のスループットの低下 (平均レイテンシーの増加) が発生する可能性があります。
- このオプションは、単一のキーをロックする必要があるステートメントにのみ有効です。ステートメントが複数の行を同時にロックする必要がある場合、このオプションはそのようなステートメントには有効ではありません。
- この機能は、デフォルトでは無効になっている
tidb_pessimistic_txn_aggressive_locking変数によって v6.6.0 で導入されました。
tidb_placement_mode v6.0.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
STRICT - 可能な値:
STRICT、IGNORE - この変数は、DDL ステートメントがSQLで指定された配置ルール無視するかどうかを制御します。変数値が
IGNORE場合、すべての配置ルール オプションは無視されます。 - これは、無効な配置ルールが割り当てられている場合でもテーブルが常に作成できることを保証するために、論理ダンプ/リストア ツールによって使用されることを目的としています。これは、mysqldump がすべてのダンプ ファイルの先頭に
SET FOREIGN_KEY_CHECKS=0;書き込む方法に似ています。
tidb_plan_cache_invalidation_on_fresh_stats v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、関連するテーブルの統計が更新されたときにプラン キャッシュを自動的に無効にするかどうかを制御します。
- この変数を有効にすると、プラン キャッシュは統計をより十分に活用して実行プランを生成できるようになります。例:
- 統計が利用可能になる前に実行プランが生成された場合、統計が利用可能になるとプラン キャッシュは実行プランを再生成します。
- テーブルのデータ分布が変更され、以前は最適だった実行プランが最適でなくなった場合、プラン キャッシュは統計が再収集された後に実行プランを再生成します。
- この変数は、v7.1.0 より前のバージョンから v7.1.0 以降にアップグレードされた TiDB クラスターではデフォルトで無効になっています。
tidb_plan_cache_max_plan_size v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
2097152(2 MiB) - 範囲:
[0, 9223372036854775807](バイト単位)。単位「KiB|MiB|GiB|TiB」のメモリ形式もサポートされています。30制限がないことを意味します。 - この変数は、準備済みプラン キャッシュまたは準備されていないプラン キャッシュにキャッシュできるプランの最大サイズを制御します。プランのサイズがこの値を超えると、プランはキャッシュされません。詳細については、 準備されたプランキャッシュのメモリ管理および準備されていないプラン キャッシュ参照してください。
tidb_pprof_sql_cpu v4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 1] - この変数は、パフォーマンスの問題を識別してトラブルシューティングするために、プロファイル出力内の対応する SQL ステートメントをマークするかどうかを制御するために使用されます。
tidb_prefer_broadcast_join_by_exchange_data_size v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- デフォルト値:
OFF - この変数は、TiDB がMPPハッシュ結合アルゴリズムを選択するときに、ネットワーク転送のオーバーヘッドが最小のアルゴリズムを使用するかどうかを制御します。この変数を有効にすると、TiDB はそれぞれ
Broadcast Hash JoinとShuffled Hash Join使用してネットワークで交換されるデータのサイズを推定し、サイズの小さい方を選択します。 - この変数を有効にすると、
tidb_broadcast_join_threshold_countとtidb_broadcast_join_threshold_size有効になりません。
tidb_prepared_plan_cache_memory_guard_ratio v6.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0.1 - 範囲:
[0, 1] - 準備されたプラン キャッシュがメモリ保護メカニズムをトリガーするしきい値。詳細については、 プリペアドプランキャッシュのメモリ管理参照してください。
- この設定は以前は
tidb.tomlオプション (prepared-plan-cache.memory-guard-ratio) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_prepared_plan_cache_size v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[1, 100000] - セッションでキャッシュできるプランの最大数。詳細については、 プリペアドプランキャッシュのメモリ管理参照してください。
- この設定は以前は
tidb.tomlオプション (prepared-plan-cache.capacity) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_projection_concurrency
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[-1, 256] - 単位: スレッド
- この変数は、
Projection演算子の同時実行性を設定するために使用されます。 - 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tidb_query_log_max_len
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
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 の新機能
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、タイムスタンプの取得を最適化するために使用されます。これは、読み取り/書き込みの競合がほとんど発生しない、読み取りコミット分離レベルのシナリオに適しています。この変数を有効にすると、グローバル タイムスタンプの取得にかかるレイテンシーとコストを回避でき、トランザクション レベルの読み取りレイテンシーを最適化できます。
- 読み取り/書き込みの競合が深刻な場合、この機能を有効にすると、グローバル タイムスタンプの取得にかかるコストとレイテンシーが増加し、パフォーマンスが低下する可能性があります。詳細については、 コミット読み取り分離レベル参照してください。
tidb_rc_write_check_ts v6.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、タイムスタンプの取得を最適化するために使用され、悲観的トランザクションの分離レベル
READ-COMMITTEDでポイント書き込みの競合が少ないシナリオに適しています。この変数を有効にすると、ポイント書き込みステートメントの実行中にグローバル タイムスタンプを取得することによるレイテンシーとオーバーヘッドを回避できます。現在、この変数はUPDATE、DELETE、およびSELECT ...... FOR UPDATE3 種類のポイント書き込みステートメントに適用できます。ポイント書き込みステートメントとは、主キーまたは一意キーをフィルター条件として使用し、最終実行演算子にPOINT-GET含まれる書き込みステートメントを指します。 - ポイント書き込みの競合が深刻な場合、この変数を有効にすると余分なオーバーヘッドとレイテンシーが増加し、パフォーマンスが低下します。詳細については、 コミット読み取り分離レベル参照してください。
tidb_read_consistency v5.4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: 文字列
- デフォルト値:
strict - この変数は、自動コミット読み取りステートメントの読み取り一貫性を制御するために使用されます。
- 変数値が
weakに設定されている場合、読み取りステートメントによって検出されたロックは直接スキップされ、読み取り実行が高速化される可能性があります。これは、弱い一貫性の読み取りモードです。ただし、トランザクション セマンティクス (アトミック性など) と分散一貫性 (線形化可能性など) は保証されません。 - 自動コミット読み取りが高速に返す必要があり、弱い一貫性の読み取り結果が許容されるユーザー シナリオでは、弱い一貫性の読み取りモードを使用できます。
tidb_read_staleness v5.4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[-2147483648, 0] - この変数は、TiDB が現在のセッションで読み取ることができる履歴データの時間範囲を設定するために使用されます。値を設定すると、TiDB はこの変数で許可された範囲からできるだけ新しいタイムスタンプを選択し、その後のすべての読み取り操作はこのタイムスタンプに対して実行されます。たとえば、この変数の値が
-5に設定されている場合、TiKV に対応する履歴バージョンのデータがあるという条件で、TiDB は 5 秒の時間範囲内でできるだけ新しいタイムスタンプを選択します。
tidb_record_plan_in_slow_log
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、スロー ログにスロー クエリの実行プランを含めるかどうかを制御するために使用されます。
tidb_redact_log
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TiDB ログとスロー ログに記録される SQL ステートメント内のユーザー情報を非表示にするかどうかを制御します。
- 変数を
1に設定すると、ユーザー情報は非表示になります。たとえば、実行された SQL 文がinsert into t values (1,2)場合、ログにはinsert into t values (?,?)として記録されます。
tidb_regard_null_as_point v5.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、オプティマイザがインデックス アクセスのプレフィックス条件として NULL 等価性を含むクエリ条件を使用できるかどうかを制御します。
- この変数はデフォルトで有効になっています。有効にすると、オプティマイザはアクセスするインデックス データのボリュームを削減できるため、クエリの実行が高速化されます。たとえば、クエリに複数列のインデックス
index(a, b)が含まれ、クエリ条件にa<=>null and b=1含まれている場合、オプティマイザはインデックス アクセスのクエリ条件でa<=>nullとb=1両方を使用できます。変数が無効になっている場合、a<=>null and b=1は null 等価条件が含まれているため、オプティマイザはインデックス アクセスにb=1使用しません。
tidb_remove_orderby_in_subquery v6.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v7.2.0 より前では、デフォルト値は
OFFです。v7.2.0 以降では、デフォルト値はONです。 - サブクエリ内の
ORDER BY句を削除するかどうかを指定します。
tidb_replica_read v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 列挙
- デフォルト値:
leader - 可能な値:
leader、follower、leader-and-follower、prefer-leader、closest-replicas、closest-adaptive、およびlearner。learner値は v6.6.0 で導入されました。 - この変数は、TiDB がデータを読み取る場所を制御するために使用されます。
- 使用方法と実装の詳細については、 Followerが読んだ参照してください。
tidb_restricted_read_only v5.2.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF tidb_restricted_read_onlyとtidb_super_read_only同様に動作します。ほとんどの場合、tidb_super_read_onlyのみを使用する必要があります。SUPERまたはSYSTEM_VARIABLES_ADMIN権限を持つユーザーはこの変数を変更できます。ただし、 Security強化モードが有効になっている場合は、この変数の読み取りまたは変更には追加のRESTRICTED_VARIABLES_ADMIN権限が必要です。- 次の場合には
tidb_restricted_read_onlytidb_super_read_only影響します。tidb_restricted_read_onlyをONに設定すると、tidb_super_read_onlyONに更新されます。tidb_restricted_read_onlyOFFに設定すると、tidb_super_read_only変更されません。tidb_restricted_read_onlyがON場合、tidb_super_read_onlyOFFに設定することはできません。
- TiDB の DBaaS プロバイダーの場合、TiDB クラスターが別のデータベースのダウンストリーム データベースである場合、TiDB クラスターを読み取り専用にするには、 Security強化モード有効にした
tidb_restricted_read_only使用する必要があります。これにより、顧客がtidb_super_read_only使用してクラスターを書き込み可能にすることができなくなります。これを実現するには、 Security強化モード有効にし、SYSTEM_VARIABLES_ADMINおよびRESTRICTED_VARIABLES_ADMIN権限を持つ管理者ユーザーを使用してtidb_restricted_read_only制御し、データベース ユーザーがSUPER権限を持つルート ユーザーを使用してtidb_super_read_onlyのみを制御できるようにする必要があります。 - この変数は、クラスター全体の読み取り専用ステータスを制御します。変数が
ONの場合、クラスター全体のすべての TiDB サーバーは読み取り専用モードになります。この場合、 TiDB はSELECT、USE、SHOWなどのデータを変更しないステートメントのみを実行します。INSERTやUPDATEなどの他のステートメントについては、 TiDB は読み取り専用モードでのそれらのステートメントの実行を拒否します。 - この変数を使用して読み取り専用モードを有効にすると、クラスター全体が最終的に読み取り専用ステータスになることが保証されます。TiDB クラスターでこの変数の値を変更したが、その変更がまだ他の TiDB サーバーに伝播していない場合、更新されていない TiDB サーバーはまだ読み取り専用モードではありません。
- TiDB は、SQL ステートメントが実行される前に読み取り専用フラグをチェックします。v6.2.0 以降では、SQL ステートメントがコミットされる前にもフラグがチェックされます。これにより、サーバーが読み取り専用モードになった後に、長時間実行される自動コミットステートメントによってデータが変更される可能性を防ぐことができます。
- この変数を有効にすると、TiDB はコミットされていないトランザクションを次の方法で処理します。
- コミットされていない読み取り専用トランザクションの場合は、通常どおりトランザクションをコミットできます。
- 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
- 変更されたデータを含むコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
- 読み取り専用モードを有効にすると、ユーザーに
RESTRICTED_REPLICA_WRITER_ADMIN権限が明示的に付与されていない限り、すべてのユーザー (SUPER権限を持つユーザーを含む) は、データを書き込む可能性のある SQL ステートメントを実行できなくなります。
tidb_request_source_type v7.4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
"" "background""br""stats""lightning""ddl"- この変数は、 リソース管理によって識別および制御される現在のセッションのタスク タイプを明示的に指定するために使用されます。例:
SET @@tidb_request_source_type = "background"。
再試行回数制限
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
10 - 範囲:
[-1, 9223372036854775807] - この変数は、楽観的トランザクションの最大再試行回数を設定するために使用されます。トランザクションで再試行可能なエラー (トランザクションの競合、非常に遅いトランザクションのコミット、テーブル スキーマの変更など) が発生すると、このトランザクションはこの変数に従って再実行されます
tidb_retry_limitから0に設定すると、自動再試行が無効になることに注意してください。この変数は楽観的トランザクションにのみ適用され、悲観的トランザクションには適用されません。
tidb_row_format_version
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
2 - 範囲:
[1, 2] - テーブルに新しく保存されるデータの形式バージョンを制御します。TiDB v4.0 では、新しいデータを保存するにはデフォルトでバージョン新しいstorage行形式
2が使用されます。 - TiDB バージョン v4.0.0 より前のバージョンから v4.0.0 以降のバージョンにアップグレードする場合、フォーマット バージョンは変更されず、TiDB は引き続きバージョン
1の古いフォーマットを使用してテーブルにデータを書き込みます。つまり、新しく作成されたクラスターのみがデフォルトで新しいデータ フォーマットを使用することになります。 - この変数を変更しても、保存されている古いデータには影響しませんが、この変数を変更した後に新しく書き込まれたデータにのみ、対応するバージョン形式が適用されることに注意してください。
tidb_runtime_filter_mode v7.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 列挙
- デフォルト値:
OFF - 可能な値:
OFF、LOCAL - ランタイム フィルターのモード、つまりフィルター送信側演算子とフィルター受信側演算子の関係を制御します。モードは
OFFとLOCAL2 つがあります。9OFFランタイム フィルターを無効にすることを意味します。11LOCALローカル モードでランタイム フィルターを有効にすることを意味します。詳細については、 ランタイムフィルターモード参照してください。
tidb_runtime_filter_type v7.2.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 列挙
- デフォルト値:
IN - 可能な値:
IN - 生成されたフィルター演算子によって使用される述語のタイプを制御します。現在サポートされているタイプは
INのみです。詳細については、 ランタイムフィルタータイプ参照してください。
tidb_scatter_region
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - デフォルトでは、TiDB で新しいテーブルが作成されるときに、そのテーブルの領域が分割されます。この変数を有効にすると、
CREATE TABLE番目のステートメントの実行中に、新しく分割された領域がすぐに分散されます。これは、テーブルがバッチで作成された直後にデータをバッチで書き込む必要があるシナリオに適用されます。これは、新しく分割された領域を事前に TiKV に分散できるため、PD によってスケジュールされるのを待つ必要がないためです。バッチでのデータ書き込みの継続的な安定性を確保するために、CREATE TABLEステートメントは、領域が正常に分散された後にのみ成功を返します。これにより、この変数を無効にした場合よりも、ステートメントの実行時間が何倍も長くなります。 - テーブルの作成時に
SHARD_ROW_ID_BITSとPRE_SPLIT_REGIONSが設定されている場合、テーブルの作成後に指定された数のリージョンが均等に分割されることに注意してください。
tidb_schema_version_cache_limit v7.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
16 - 範囲:
[2, 255] - この変数は、TiDB インスタンスにキャッシュできる履歴スキーマ バージョンの数を制限します。デフォルト値は
16で、これは、TiDB がデフォルトで 16 個の履歴スキーマ バージョンをキャッシュすることを意味します。 - 通常、この変数を変更する必要はありません。 ステイル読み取り機能を使用し、DDL 操作が頻繁に実行されると、スキーマ バージョンが頻繁に変更されます。その結果、 ステイル読み取り がスナップショットからスキーマ情報を取得しようとすると、スキーマ キャッシュ ミスのために情報の再構築に時間がかかる場合があります。この場合、
tidb_schema_version_cache_limitの値を増やす (たとえば、32) ことで、スキーマ キャッシュ ミスの問題を回避できます。 - この変数を変更すると、TiDB のメモリ使用量がわずかに増加します。OOM の問題を回避するには、TiDB のメモリ使用量を監視してください。
tidb_server_memory_limit v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
80% - 範囲:
- 値はパーセンテージ形式で設定できます。これは、メモリ使用量を総メモリに対してパーセンテージで表すものです。値の範囲は
[1%, 99%]です。 - メモリサイズの値も設定できます。値の範囲はバイト単位で
0~[536870912, 9223372036854775807]です。単位が「KiB|MiB|GiB|TiB」のメモリ形式がサポートされています。50メモリ制限がないことを意味します。 - この変数が 512 MiB 未満で
0以外のメモリサイズに設定されている場合、TiDB は実際のサイズとして 512 MiB を使用します。
- 値はパーセンテージ形式で設定できます。これは、メモリ使用量を総メモリに対してパーセンテージで表すものです。値の範囲は
- この変数は、TiDB インスタンスのメモリ制限を指定します。TiDB のメモリ使用量が制限に達すると、TiDB はメモリ使用量が最も高い現在実行中の SQL ステートメントをキャンセルします。SQL ステートメントが正常にキャンセルされると、TiDB はGolang GC を呼び出してメモリをすぐに再利用し、できるだけ早くメモリのストレスを軽減しようとします。
- メモリ使用量が
tidb_server_memory_limit_sess_min_size制限を超える SQL ステートメントのみが、最初にキャンセルされる SQL ステートメントとして選択されます。 - 現在、TiDB は一度に 1 つの SQL ステートメントのみをキャンセルします。TiDB が SQL ステートメントを完全にキャンセルしてリソースを回復した後、メモリ使用量がこの変数で設定された制限よりもまだ大きい場合、TiDB は次のキャンセル操作を開始します。
tidb_server_memory_limit_gc_trigger v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
70% - 範囲:
[50%, 99%] - TiDB が GC をトリガーしようとするしきい値。TiDB のメモリ使用量が
tidb_server_memory_limit*tidb_server_memory_limit_gc_triggerの値に達すると、TiDB はGolang GC 操作をアクティブにトリガーします。1 分間にトリガーされる GC 操作は 1 つだけです。
tidb_server_memory_limit_sess_min_size v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
134217728(128 MiB) - 範囲:
[128, 9223372036854775807](バイト単位)。単位「KiB|MiB|GiB|TiB」のメモリ形式もサポートされています。 - メモリ制限を有効にすると、TiDB は現在のインスタンスでメモリ使用量が最も高い SQL ステートメントを終了します。この変数は、終了する SQL ステートメントの最小メモリ使用量を指定します。メモリ使用量の少ないセッションが多すぎるために TiDB インスタンスのメモリ使用量が制限を超えている場合は、この変数の値を適切に下げて、より多くのセッションをキャンセルできるようにすることができます。
tidb_service_scope v7.4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: いいえ
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- オプション値: "",
background - この変数はインスタンス レベルのシステム変数です。これを使用して、 TiDB 分散実行フレームワーク (DXF)下にある TiDB ノードのサービス スコープを制御できます。TiDB ノードの
tidb_service_scopeをbackgroundに設定すると、DXF はその TiDB ノードがADD INDEXやIMPORT INTOなどのバックグラウンド タスクを実行するようにスケジュールします。
注記:
- クラスター内のどの TiDB ノードにも
tidb_service_scope設定されていない場合、DXF はすべての TiDB ノードがバックグラウンド タスクを実行するようにスケジュールします。現在のビジネスに対するパフォーマンスの影響が懸念される場合は、いくつかの TiDB ノードにtidb_service_scope~backgroundを設定できます。これらのノードのみがバックグラウンド タスクを実行します。- 複数の TiDB ノードがあるクラスターでは、2 つ以上の TiDB ノードでこのシステム変数を
backgroundに設定することを強くお勧めします。1 つの TiDB ノードのみにtidb_service_scope設定されている場合、ノードが再起動されるか障害が発生すると、タスクはbackground設定されていない他の TiDB ノードに再スケジュールされ、これらの TiDB ノードに影響を及ぼします。- 新しくスケールされたノードの場合、スケールされたノードのリソースの消費を避けるため、DXF タスクはデフォルトでは実行されません。このスケールされたノードでバックグラウンド タスクを実行する場合は、このノードの
tidb_service_scopeをbackgroundに手動で設定する必要があります。
tidb_session_alias v7.4.0 の新機能
- スコープ: セッション
- クラスターに存続: いいえ
- ヒントSET_VARに該当: はい
- デフォルト値: ""
- この変数を使用すると、現在のセッションに関連するログの
session_alias列目の値をカスタマイズできます。これは、トラブルシューティングでセッションを識別するのに役立ちます。この設定は、ステートメントの実行に関係する複数のノード (TiKV を含む) のログに影響します。この変数の最大長は 64 文字に制限されており、長さを超える文字は自動的に切り捨てられます。値の末尾のスペースも自動的に削除されます。
tidb_session_plan_cache_size v7.1.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[1, 100000] - この変数は、キャッシュできるプランの最大数を制御します。1 と準備されたプランキャッシュ 準備されていないプラン キャッシュ同じキャッシュを共有します。
- 以前のバージョンからv7.1.0以降のバージョンにアップグレードすると、この変数は
tidb_prepared_plan_cache_sizeと同じ値のままになります。
tidb_shard_allocate_step v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
9223372036854775807 - 範囲:
[1, 9223372036854775807] - この変数は、
AUTO_RANDOMまたはSHARD_ROW_ID_BITS属性に割り当てられる連続 ID の最大数を制御します。通常、1 つのトランザクションでは、AUTO_RANDOMID またはSHARD_ROW_ID_BITSの注釈付き行 ID が増分され、連続します。この変数を使用すると、大規模なトランザクション シナリオでのホットスポットの問題を解決できます。
tidb_簡易メトリクス
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数を有効にすると、TiDB は Grafana パネルで使用されていないメトリックを収集または記録しません。
tidb_skip_ascii_check v5.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、ASCII 検証をスキップするかどうかを設定するために使用されます。
- ASCII 文字の検証はパフォーマンスに影響します。入力文字が有効な ASCII 文字であることが確実な場合は、変数値を
ONに設定できます。
tidb_skip_isolation_level_check
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
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_missing_partition_stats v7.3.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
ON動的剪定モードでパーティションテーブルにアクセスすると、TiDB は各パーティションの統計を集計して GlobalStats を生成します。この変数は、パーティション統計が欠落している場合の GlobalStats の生成を制御します。
- この変数が
ON場合、TiDB は GlobalStats を生成するときに欠落しているパーティション統計をスキップするため、GlobalStats の生成には影響しません。 - この変数が
OFF場合、TiDB はパーティション統計の欠落を検出すると GlobalStats の生成を停止します。
- この変数が
tidb_skip_utf8_check
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、UTF-8 検証をスキップするかどうかを設定するために使用されます。
- UTF-8 文字の検証はパフォーマンスに影響します。入力文字が有効な UTF-8 文字であることが確実な場合は、変数値を
ONに設定できます。
注記:
文字チェックをスキップすると、TiDB はアプリケーションによって書き込まれた不正な UTF-8 文字を検出できず、
ANALYZE実行時にデコード エラーが発生し、その他の未知のエンコードの問題が発生する可能性があります。アプリケーションが書き込まれた文字列の有効性を保証できない場合は、文字チェックをスキップすることはお勧めしません。
tidb_slow_log_threshold
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに保持: いいえ。接続している現在の TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
300 - 範囲:
[-1, 9223372036854775807] - 単位: ミリ秒
- この変数は、スロー ログで消費される時間のしきい値を出力します。デフォルトでは 300 ミリ秒に設定されています。クエリの消費時間がこの値より大きい場合、このクエリはスロー クエリと見なされ、そのログがスロー クエリ ログに出力されます。出力レベル
log.levelが"debug"の場合、この変数の設定に関係なく、すべてのクエリがスロー クエリ ログに記録されることに注意してください。
tidb_slow_query_file
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
INFORMATION_SCHEMA.SLOW_QUERYをクエリすると、構成ファイルでslow-query-fileで設定されたスロー クエリ ログ名のみが解析されます。デフォルトのスロー クエリ ログ名は「tidb-slow.log」です。他のログを解析するには、tidb_slow_query_fileセッション変数を特定のファイル パスに設定し、INFORMATION_SCHEMA.SLOW_QUERYをクエリして、設定されたファイル パスに基づいてスロー クエリ ログを解析します。
詳細は遅いクエリを特定する参照。
スナップショット
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- この変数は、セッションによってデータが読み取られる時点を設定するために使用されます。たとえば、変数を「2017-11-11 20:20:20」または「400036290571534337」のような TSO 番号に設定すると、現在のセッションはその瞬間のデータを読み取ります。
tidb_source_id v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 15]
- この変数は、 双方向レプリケーションクラスター内の異なるクラスター ID を構成するために使用されます。
tidb_stats_cache_mem_quota v6.1.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- 単位: バイト
- デフォルト値:
0。これは、メモリクォータが TiDB インスタンスの合計メモリサイズの半分に自動的に設定されることを意味します。 - 範囲:
[0, 1099511627776] - この変数は、TiDB 統計キャッシュのメモリクォータを設定します。
tidb_stats_load_pseudo_timeout v5.4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、SQL 最適化の待機時間がタイムアウトに達し、完全な列統計を同期的にロードするときに TiDB がどのように動作するかを制御します。デフォルト値
ONは、タイムアウト後に SQL 最適化が疑似統計の使用に戻ることを意味します。この変数をOFFに設定すると、タイムアウト後に SQL 実行が失敗します。
tidb_stats_load_sync_wait v5.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[0, 2147483647] - 単位: ミリ秒
- この変数は、統計の同期ロード機能を有効にするかどうかを制御します。値
0は、機能が無効であることを意味します。この機能を有効にするには、この変数を、完全な列統計を同期ロードするために SQL 最適化が最大で待機できるタイムアウト (ミリ秒単位) に設定できます。詳細については、 負荷統計参照してください。
tidb_stmt_summary_enable_persistent v6.6.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は読み取り専用です。1 ステートメントの概要の永続性有効にするかどうかを制御します。
- この変数の値は、構成項目
tidb_stmt_summary_enable_persistentの値と同じです。
tidb_stmt_summary_filename v6.6.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
"tidb-statements.log" - この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合に永続データが書き込まれるファイルを指定します。
- この変数の値は、構成項目
tidb_stmt_summary_filenameの値と同じです。
tidb_stmt_summary_file_max_backups v6.6.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合に保持できるデータ ファイルの最大数を指定します。
- この変数の値は、構成項目
tidb_stmt_summary_file_max_backupsの値と同じです。
tidb_stmt_summary_file_max_days v6.6.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
3 - 単位: 日
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合に永続データ ファイルを保持する最大日数を指定します。
- この変数の値は、構成項目
tidb_stmt_summary_file_max_daysの値と同じです。
tidb_stmt_summary_file_max_size v6.6.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
64 - 単位: MiB
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合、永続データ ファイルの最大サイズを指定します。
- この変数の値は、構成項目
tidb_stmt_summary_file_max_sizeの値と同じです。
tidb_stmt_summary_history_size v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
24 - 範囲:
[0, 255] - この変数は、履歴容量をステートメント要約表に設定するために使用されます。
tidb_stmt_summary_internal_query v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、TiDB の SQL 情報をステートメント要約表に含めるかどうかを制御するために使用されます。
tidb_stmt_summary_max_sql_length v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
4096 - 範囲:
[0, 2147483647] - 単位: バイト
- この変数は、 ステートメント要約表とTiDBダッシュボードの SQL 文字列の長さを制御するために使用されます。
tidb_stmt_summary_max_stmt_count v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
3000 - 範囲:
[1, 32767] - この変数は、メモリにステートメント要約表するステートメントの最大数を設定するために使用されます。
tidb_stmt_summary_refresh_interval v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1800 - 範囲:
[1, 2147483647] - 単位: 秒
- この変数は、 ステートメント要約表の更新時間を設定するために使用されます。
tidb_store_batch_size
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: はい
- タイプ: 整数
- デフォルト値:
4 - 範囲:
[0, 25000] - この変数は、
IndexLookUpオペレータのコプロセッサータスクのバッチ サイズを制御するために使用されます。30バッチを無効にすることを意味します。タスクの数が比較的多く、遅いクエリが発生する場合は、この変数を増やしてクエリを最適化できます。
tidb_store_limit v3.0.4 および v4.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 9223372036854775807] - この変数は、TiDB が TiKV に同時に送信できるリクエストの最大数を制限するために使用されます。0 は制限なしを意味します。
tidbstreamagg同時実行性
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - この変数は、クエリが実行されるときに
StreamAgg演算子の同時実行性を設定します。 - この変数を設定することは推奨されません。変数値を変更すると、データの正確性に問題が発生する可能性があります。
tidb_super_read_only v5.3.1 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF tidb_super_read_onlyMySQL 変数super_read_onlyの置き換えとして実装することを目指しています。ただし、TiDB は分散データベースであるため、tidb_super_read_only実行後すぐにデータベースを読み取り専用にするのではなく、最終的には読み取り専用にします。- 権限
SUPERまたはSYSTEM_VARIABLES_ADMINを持つユーザーはこの変数を変更できます。 - この変数は、クラスター全体の読み取り専用ステータスを制御します。変数が
ONの場合、クラスター全体のすべての TiDB サーバーは読み取り専用モードになります。この場合、 TiDB はSELECT、USE、SHOWなどのデータを変更しないステートメントのみを実行します。INSERTやUPDATEなどの他のステートメントについては、 TiDB は読み取り専用モードでのそれらのステートメントの実行を拒否します。 - この変数を使用して読み取り専用モードを有効にすると、クラスター全体が最終的に読み取り専用ステータスになることが保証されます。TiDB クラスターでこの変数の値を変更したが、その変更が他の TiDB サーバーにまだ伝播していない場合、更新されていない TiDB サーバーはまだ読み取り専用モードではありません。
- TiDB は、SQL ステートメントが実行される前に読み取り専用フラグをチェックします。v6.2.0 以降では、SQL ステートメントがコミットされる前にもフラグがチェックされます。これにより、サーバーが読み取り専用モードになった後に、長時間実行される自動コミットステートメントによってデータが変更される可能性を防ぐことができます。
- この変数を有効にすると、TiDB はコミットされていないトランザクションを次の方法で処理します。
- コミットされていない読み取り専用トランザクションの場合は、通常どおりトランザクションをコミットできます。
- 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
- 変更されたデータを含むコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
- 読み取り専用モードを有効にすると、ユーザーに
RESTRICTED_REPLICA_WRITER_ADMIN権限が明示的に付与されていない限り、すべてのユーザー (SUPER権限を持つユーザーを含む) は、データを書き込む可能性のある SQL ステートメントを実行できなくなります。 tidb_restricted_read_onlyシステム変数がONに設定されている場合、tidb_super_read_onlytidb_restricted_read_onlyの影響を受ける場合があります。詳細な影響については、tidb_restricted_read_onlyの説明を参照してください。
tidb_sysdate_is_now v6.0.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF - この変数は、関数
SYSDATEを関数NOWに置き換えることができるかどうかを制御するために使用されます。この構成項目は、MySQL オプションsysdate-is-nowと同じ効果があります。
tidb_sysproc_scan_concurrency v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲:
[1, 256] - この変数は、TiDB が内部 SQL ステートメント (統計の自動更新など) を実行するときに実行されるスキャン操作の同時実行性を設定するために使用されます。
tidb_table_cache_lease v6.0.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
3 - 範囲:
[1, 10] - 単位: 秒
- この変数は、リース時間キャッシュされたテーブルを制御するために使用されます。デフォルト値は
3です。この変数の値は、キャッシュされたテーブルの変更に影響します。キャッシュされたテーブルに変更を加えた後、最長の待機時間はtidb_table_cache_lease秒になる可能性があります。テーブルが読み取り専用であるか、書き込みレイテンシーが長い場合は、この変数の値を増やして、テーブルのキャッシュの有効時間を増やし、リースの更新頻度を減らすことができます。
tidb_tmp_table_max_size v5.3.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
67108864 - 範囲:
[1048576, 137438953472] - 単位: バイト
- この変数は、単一の一時テーブルの最大サイズを設定するために使用されます。この変数値より大きいサイズの一時テーブルではエラーが発生します。
tidb_top_sql_max_meta_count v6.0.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
5000 - 範囲:
[1, 10000]
- この変数は、1 分あたりTop SQLずつ収集される SQL ステートメント タイプの最大数を制御するために使用されます。
tidb_top_sql_max_time_series_count v6.0.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
注記:
現在、TiDB ダッシュボードの「Top SQL」ページには、負荷に最も寄与している上位 5 種類の SQL クエリのみが表示されます。これは、
tidb_top_sql_max_time_series_countの構成とは無関係です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
100 - 範囲:
[1, 5000]
- この変数は、負荷に最も寄与する SQL ステートメント (つまり、上位 N) を 1 分あたりTop SQLずつ記録できる数を制御するために使用されます。
tidb_track_aggregate_memory_usage
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、TiDB が集計関数のメモリ使用量を追跡するかどうかを制御します。
tidb_tso_client_batch_max_wait_time v5.3.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0 - 範囲:
[0, 10] - 単位: ミリ秒
- この変数は、TiDB が PD から TSO を要求するときのバッチ操作の最大待機時間を設定するために使用されます。デフォルト値は
0で、追加の待機時間がないことを意味します。 - TiDB が使用する PD クライアントは、PD から TSO 要求を毎回取得する際に、同時に受信した 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_ttl_delete_rate_limit v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
0 - 範囲:
[0, 9223372036854775807] - この変数は、各 TiDB ノードの TTL ジョブにおける
DELETEステートメントのレート制限に使用されます。値は、TTL ジョブの単一ノードで 1 秒あたりに許可されるDELETEステートメントの最大数を表します。この変数を0に設定すると、制限は適用されません。詳細については、 生きる時間を参照してください。
tidb_ttl_delete_batch_size v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
100 - 範囲:
[1, 10240] - この変数は、TTL ジョブ内の単一の
DELETEトランザクションで削除できる行の最大数を設定するために使用されます。詳細については、 生きる時間を参照してください。
tidb_ttl_delete_worker_count v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
4 - 範囲:
[1, 256] - この変数は、各 TiDB ノード上の TTL ジョブの最大同時実行数を設定するために使用されます。詳細については、 生きる時間を参照してください。
tidb_ttl_job_enable v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - タイプ: ブール値
- この変数は、TTL ジョブを有効にするかどうかを制御するために使用されます。
OFFに設定すると、TTL 属性を持つすべてのテーブルで期限切れのデータのクリーンアップが自動的に停止されます。詳細については、 生きる時間を参照してください。
tidb_ttl_scan_batch_size v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
500 - 範囲:
[1, 10240] - この変数は、TTL ジョブで期限切れのデータをスキャンするために使用される各
SELECTステートメントのLIMIT値を設定するために使用されます。詳細については、 生きる時間を参照してください。
tidb_ttl_scan_worker_count v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
4 - 範囲:
[1, 256] - この変数は、各 TiDB ノード上の TTL スキャン ジョブの最大同時実行数を設定するために使用されます。詳細については、 生きる時間を参照してください。
tidb_ttl_job_schedule_window_start_time v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- クラスターに存続: はい
- デフォルト値:
00:00 +0000 - この変数は、バックグラウンドでの TTL ジョブのスケジュール ウィンドウの開始時間を制御するために使用されます。この変数の値を変更する場合、ウィンドウが小さいと期限切れのデータのクリーンアップが失敗する可能性があるので注意してください。詳細については、 生きる時間を参照してください。
tidb_ttl_job_schedule_window_end_time v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 時間
- クラスターに存続: はい
- デフォルト値:
23:59 +0000 - この変数は、バックグラウンドでの TTL ジョブのスケジュール ウィンドウの終了時間を制御するために使用されます。この変数の値を変更する場合、ウィンドウが小さいと期限切れのデータのクリーンアップが失敗する可能性があるので注意してください。詳細については、 生きる時間を参照してください。
tidb_ttl_running_tasks v7.0.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
-1と[1, 256] - クラスター全体で実行中の TTL タスクの最大数を指定します。1
-1TTL タスクの数が TiKV ノードの数と等しいことを意味します。詳細については、 生きる時間を参照してください。
tidb_txn_assertion_level v6.0.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: いいえ
タイプ: 列挙
デフォルト値:
FAST可能な
STRICTFASTOFFこの変数はアサーション レベルを制御するために使用されます。アサーションは、データとインデックス間の一貫性チェックであり、書き込まれるキーがトランザクション コミット プロセスに存在するかどうかをチェックします。詳細については、 データとインデックス間の不整合のトラブルシューティング参照してください。
OFF: このチェックを無効にします。FAST: ほとんどのチェック項目を有効にしますが、パフォーマンスにはほとんど影響しません。STRICT: すべてのチェック項目を有効にします。システムのワークロードが高い場合、悲観的トランザクションのパフォーマンスにわずかな影響があります。
v6.0.0 以降のバージョンの新しいクラスターの場合、デフォルト値は
FASTです。v6.0.0 より前のバージョンからアップグレードする既存のクラスターの場合、デフォルト値はOFFです。
tidb_txn_commit_batch_size v6.2.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
16384 - 範囲:
[1, 1073741824] - 単位: バイト
- この変数は、TiDB が TiKV に送信するトランザクション コミット要求のバッチ サイズを制御するために使用されます。アプリケーション ワークロードのほとんどのトランザクションに大量の書き込み操作がある場合は、この変数をより大きな値に調整すると、バッチ処理のパフォーマンスが向上します。ただし、この変数が大きすぎる値に設定され、TiKV の
raft-entry-max-sizeの制限を超えると、コミットが失敗する可能性があります。
tidbtxnモード
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
pessimistic - 可能な値:
pessimistic、optimistic - この変数はトランザクション モードを設定するために使用されます。TiDB 3.0 は悲観的トランザクションをサポートしています。TiDB 3.0.8 以降では、 悲観的トランザクションモードがデフォルトで有効になっています。
- TiDB を v3.0.7 以前のバージョンから v3.0.8 以降のバージョンにアップグレードした場合、デフォルトのトランザクション モードは変更されません。新しく作成されたクラスターのみが、デフォルトで悲観的トランザクション モードを使用します。
- この変数が「楽観的」または「」に設定されている場合、 TiDB は楽観的トランザクションモードを使用します。
tidb_use_plan_baselines v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、実行プラン バインディング機能を有効にするかどうかを制御するために使用されます。デフォルトでは有効になっていますが、値
OFFを割り当てることで無効にすることができます。実行プラン バインディングの使用については、 実行プランのバインディング参照してください。
tidb_wait_split_region_finish
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - 通常、リージョンの分散には長い時間がかかります。これは、PD スケジューリングと TiKV ロードによって決まります。この変数は、
SPLIT REGIONステートメントの実行時にすべてのリージョンが完全に分散された後に結果をクライアントに返すかどうかを設定するために使用されます。ONすべての領域が分散されるまでSPLIT REGIONSステートメントが待機する必要があります。OFFすべての領域の分散が完了する前にSPLIT REGIONSステートメントが戻ることを許可します。
- リージョンを分散させると、分散されているリージョンの書き込みおよび読み取りパフォーマンスが影響を受ける可能性があることに注意してください。バッチ書き込みまたはデータ インポートのシナリオでは、リージョンの分散が完了した後にデータをインポートすることをお勧めします。
tidb_wait_split_region_timeout
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
300 - 範囲:
[1, 2147483647] - 単位: 秒
- この変数は、
SPLIT REGIONステートメントを実行するためのタイムアウトを設定するために使用されます。指定された時間値内にステートメントが完全に実行されない場合は、タイムアウト エラーが返されます。
tidb_window_concurrency v4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
-1 - 範囲:
[1, 256] - 単位: スレッド
- この変数は、ウィンドウ演算子の同時実行度を設定するために使用されます。
- 値
-1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。
tiflash_fastscan v6.3.0 の新機能
- 範囲: セッション | グローバル
- ヒントSET_VARに該当: はい
- デフォルト値:
OFF - タイプ: ブール値
- 高速スキャンが有効になっている場合(
ONに設定)、 TiFlash はより効率的なクエリ パフォーマンスを提供しますが、クエリ結果の正確性やデータの一貫性は保証されません。
tiflash_fine_grained_shuffle_batch_size v6.2.0 の新機能
- 範囲: セッション | グローバル
- ヒントSET_VARに該当: はい
- デフォルト値:
8192 - 範囲:
[1, 18446744073709551615] - Fine Grained Shuffle を有効にすると、 TiFlashにプッシュダウンされたウィンドウ関数を並列に実行できます。この変数は、送信者が送信するデータのバッチ サイズを制御します。
- パフォーマンスへの影響: ビジネス要件に応じて適切なサイズを設定します。不適切な設定はパフォーマンスに影響します。値が小さすぎる場合 (たとえば
1)、ブロックごとに 1 つのネットワーク転送が発生します。値が大きすぎる場合 (たとえば、テーブルの合計行数)、受信側はほとんどの時間をデータの待機に費やし、パイプライン計算が機能しなくなります。適切な値を設定するには、 TiFlashレシーバーが受信した行数の分布を観察します。ほとんどのスレッドが数行 (たとえば数百行) のみを受信する場合は、この値を増やしてネットワーク オーバーヘッドを削減できます。
tiflash_fine_grained_shuffle_stream_count v6.2.0 の新機能
範囲: セッション | グローバル
クラスターに存続: はい
ヒントSET_VARに該当: はい
タイプ: 整数
デフォルト値:
0範囲:
[-1, 1024]ウィンドウ関数が実行のためにTiFlashにプッシュダウンされる場合、この変数を使用してウィンドウ関数実行の同時実行レベルを制御できます。可能な値は次のとおりです。
- TiFlash : Fine Grained Shuffle 機能は無効です。TiFlash にプッシュダウンされたウィンドウ関数は、単一のスレッドで実行されます。
- 0: 細粒度シャッフル機能が有効です。
tidb_max_tiflash_threads有効な値 (0 より大きい値) に設定されている場合、tiflash_fine_grained_shuffle_stream_counttidb_max_tiflash_threadsの値に設定されます。 それ以外の場合は、 TiFlashコンピューティング ノードの CPU リソースに基づいて自動的に推定されます。 TiFlashのウィンドウ関数の実際の同時実行レベルは、 min(tiflash_fine_grained_shuffle_stream_count、 TiFlashノード上の物理スレッドの数) です。 - 0 より大きい整数: 細粒度シャッフル機能が有効になりますTiFlashにプッシュダウンされたウィンドウ関数は、複数のスレッドで実行されます。同時実行レベルは、min(
tiflash_fine_grained_shuffle_stream_count、 TiFlashノード上の物理スレッドの数) です。
理論的には、ウィンドウ関数のパフォーマンスはこの値に比例して増加します。ただし、値が実際の物理スレッド数を超えると、パフォーマンスの低下につながります。
tiflash_mem_quota_query_per_node v7.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[-1, 9223372036854775807] - この変数は、 TiFlashノードでのクエリの最大メモリ使用量を制限します。クエリのメモリ使用量がこの制限を超えると、 TiFlash はエラーを返し、クエリを終了します。この変数を
-1または0に設定すると、制限なしになります。この変数が0より大きい値に設定され、tiflash_query_spill_ratio有効な値に設定されている場合、 TiFlash はクエリレベルのスピル有効にします。
tiflash_query_spill_ratio v7.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0.7 - 範囲:
[0, 0.85] - この変数は、 TiFlash クエリレベルのスピルのしきい値を制御します
0自動クエリ レベルのスピルを無効にすることを意味します。この変数が0より大きく、クエリのメモリ使用量がtiflash_mem_quota_query_per_node*tiflash_query_spill_ratioを超えると、 TiFlash はクエリ レベルのスピルをトリガーし、必要に応じてクエリでサポートされている演算子のデータをスピルします。
注記:
- この変数は、
tiflash_mem_quota_query_per_nodeが0より大きい場合にのみ有効になります。つまり、 tiflash_mem_quota_query_per_nodeが0または-1場合、tiflash_query_spill_ratioが0より大きい場合でも、クエリ レベルのスピルは有効になりません。- TiFlashクエリ レベルのスピルが有効になっている場合、個々のTiFlash演算子のスピルしきい値は自動的に無効になります。つまり、
tiflash_mem_quota_query_per_nodeとtiflash_query_spill_ratio両方が 0 より大きい場合、 tidb_max_bytes_before_tiflash_external_sort 、 tidb_max_bytes_before_tiflash_external_group_by 、およびtidb_max_bytes_before_tiflash_external_joinの 3 つの変数は自動的に無効になり、これを0に設定するのと同じです。
tiflash_replica_read v7.3.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
all_replicas - 値のオプション:
all_replicas、closest_replicasclosest_adaptive - この変数は、クエリにTiFlashエンジンが必要な場合にTiFlashレプリカを選択するための戦略を設定するために使用されます。
all_replicas分析コンピューティングに利用可能なすべてのTiFlashレプリカを使用することを意味します。closest_adaptiveクエリを開始する TiDB ノードと同じゾーンのTiFlashレプリカを優先的に使用することを意味します。このゾーンのレプリカに必要なデータがすべて含まれていない場合、クエリには他のゾーンのTiFlashレプリカと、それに対応するTiFlashノードが含まれます。closest_replicasクエリを開始する TiDB ノードと同じゾーン内のTiFlashレプリカのみを使用することを意味します。このゾーン内のレプリカに必要なデータがすべて含まれていない場合、クエリはエラーを返します。
注記:
tikv_client_read_timeout v7.4.0 の新機能
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
0 - 範囲:
[0, 2147483647] - 単位: ミリ秒
tikv_client_read_timeout使用すると、クエリで TiKV RPC 読み取り要求を送信する TiDB のタイムアウトを設定できます。TiDB クラスターが不安定なネットワークまたは深刻な TiKV I/Oレイテンシージッターのある環境にあり、アプリケーションが SQL クエリのレイテンシーに敏感な場合は、tikv_client_read_timeoutに設定して TiKV RPC 読み取り要求のタイムアウトを短縮できます。この場合、TiKV ノードに I/Oレイテンシージッターがあると、TiDB はすぐにタイムアウトし、次の TiKVリージョンピアが配置されている TiKV ノードに RPC 要求を再送信できます。すべての TiKVリージョンピアの要求がタイムアウトすると、TiDB はデフォルトのタイムアウト (通常は 40 秒) で再試行します。- クエリでオプティマイザ ヒント
/*+ SET_VAR(TIKV_CLIENT_READ_TIMEOUT=N) */を使用して、TiDB が TiKV RPC 読み取り要求を送信するタイムアウトを設定することもできます。オプティマイザ ヒントとこのシステム変数の両方が設定されている場合、オプティマイザ ヒントが優先されます。 - デフォルト値
0、デフォルトのタイムアウト (通常は 40 秒) が使用されることを示します。
注記:
- 通常、通常のクエリには数ミリ秒かかりますが、TiKV ノードが不安定なネットワークにある場合や I/O ジッターが発生する場合は、クエリに 1 秒以上、場合によっては 10 秒かかることがあります。この場合、オプティマイザ ヒント
/*+ SET_VAR(TIKV_CLIENT_READ_TIMEOUT=100) */を使用して、特定のクエリの TiKV RPC 読み取り要求タイムアウトを 100 ミリ秒に設定できます。このようにすると、TiKV ノードの応答が遅い場合でも、TiDB はすぐにタイムアウトし、次の TiKVリージョンピアがある TiKV ノードに RPC 要求を再送信できます。2 つの TiKV ノードが同時に I/O ジッターが発生する可能性は低いため、クエリは通常、数ミリ秒から 110 ミリ秒以内に完了します。tikv_client_read_timeoutにあまり小さい値 (たとえば、1 ミリ秒) を設定しないでください。そうしないと、TiDB クラスターのワークロードが高いときに要求が簡単にタイムアウトし、その後の再試行によって TiDB クラスターの負荷がさらに増加する可能性があります。- 異なるタイプのクエリに異なるタイムアウト値を設定する必要がある場合は、オプティマイザーヒントを使用することをお勧めします。
タイムゾーン
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
SYSTEM - この変数は現在のタイムゾーンを返します。値は、「-8:00」などのオフセット、または「America/Los_Angeles」などの名前付きゾーンとして指定できます。
- 値
SYSTEMは、タイム ゾーンがシステム ホストと同じである必要があることを意味します。これは、変数system_time_zoneを介して利用できます。
タイムスタンプ
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0 - 範囲:
[0, 2147483647] - この変数の空でない値は、
CURRENT_TIMESTAMP()、NOW()、およびその他の関数のタイムスタンプとして使用される UNIX エポックを示します。この変数は、データの復元またはレプリケーションに使用される場合があります。
トランザクション分離
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
REPEATABLE-READ - 可能
READ-COMMITTEDSERIALIZABLEREPEATABLE-READREAD-UNCOMMITTED - この変数はトランザクション分離を設定します。TiDB は MySQL との互換性のために
REPEATABLE-READ宣言していますが、実際の分離レベルはスナップショット分離です。詳細についてはトランザクション分離レベル参照してください。
送信分離
この変数はtransaction_isolationの別名です。
送信分離ワンショット
注記:
この変数は TiDB で内部的に使用されます。ユーザーが使用することは想定されていません。
内部的には、TiDB パーサーはSET TRANSACTION ISOLATION LEVEL [READ COMMITTED| REPEATABLE READ | ...]ステートメントをSET @@SESSION.TX_ISOLATION_ONE_SHOT = [READ COMMITTED| REPEATABLE READ | ...]に変換します。
tx_read_ts
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- ステイル読み取りシナリオでは、このセッション変数は安定した読み取りタイムスタンプ値を記録するために使用されます。
- この変数は TiDB の内部操作に使用されます。この変数を設定することはお勧めしません。
トランザクションスコープ
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値:
global - 値のオプション:
globalとlocal - この変数は、現在のセッション トランザクションがグローバル トランザクションであるかローカル トランザクションであるかを設定するために使用されます。
- この変数は TiDB の内部操作に使用されます。この変数を設定することはお勧めしません。
validate_password.check_user_name v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON - タイプ: ブール値
- この変数は、パスワードの複雑さのチェックにおけるチェック項目です。パスワードがユーザー名と一致するかどうかをチェックします。この変数は、
validate_password.enable有効になっている場合にのみ有効になります。 - この変数が有効で
ONに設定されている場合、パスワードを設定すると、TiDB はパスワードとユーザー名 (ホスト名を除く) を比較します。パスワードがユーザー名と一致する場合、パスワードは拒否されます。 - この変数は
validate_password.policyとは独立しており、パスワードの複雑さのチェック レベルの影響を受けません。
validate_password.dictionary v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
"" - タイプ: 文字列
- この変数は、パスワードの複雑さのチェックにおけるチェック項目です。パスワードが辞書と一致するかどうかをチェックします。この変数は、
validate_password.enableが有効で、validate_password.policy2(STRONG) に設定されている場合にのみ有効になります。 - この変数は 1024 文字以下の文字列です。パスワードに存在できない単語のリストが含まれます。各単語はセミコロン (
;) で区切られます。 - この変数はデフォルトで空の文字列に設定されており、辞書チェックは実行されません。辞書チェックを実行するには、文字列に一致させる単語を含める必要があります。この変数が設定されている場合、パスワードを設定すると、TiDB はパスワードの各サブ文字列 (長さ 4 ~ 100 文字) を辞書内の単語と比較します。パスワードのサブ文字列のいずれかが辞書内の単語と一致すると、パスワードは拒否されます。比較では大文字と小文字は区別されません。
validate_password.enable v6.5.0 の新機能
注記:
この変数は常にTiDB Cloudサーバーレスに対して有効です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
OFF - タイプ: ブール値
- この変数は、パスワードの複雑さのチェックを実行するかどうかを制御します。この変数を
ONに設定すると、パスワードを設定するときに TiDB はパスワードの複雑さのチェックを実行します。
validate_password.length v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
8 - 範囲: TiDBセルフマネージドの場合は
[0, 2147483647]TiDB Cloudサーバーレス[8, 2147483647]はTiDB Cloud専用 - この変数は、パスワードの複雑さのチェックにおけるチェック項目です。パスワードの長さが十分かどうかをチェックします。デフォルトでは、パスワードの最小長は
8です。この変数は、validate_password.enable有効になっている場合にのみ有効になります。 - この変数の値は、式
validate_password.number_count + validate_password.special_char_count + (2 * validate_password.mixed_case_count)より小さくてはなりません。 - 式の値が
validate_password.lengthより大きくなるようにvalidate_password.number_count、validate_password.special_char_count、またはvalidate_password.mixed_case_countの値を変更すると、validate_password.lengthの値は式の値に合わせて自動的に変更されます。
validate_password.mixed_case_count v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲: TiDBセルフマネージドの場合は
[0, 2147483647]TiDB Cloudサーバーレス[1, 2147483647]はTiDB Cloud専用 - この変数は、パスワードの複雑さチェックにおけるチェック項目です。パスワードに十分な大文字と小文字が含まれているかどうかをチェックします。この変数は、
validate_password.enableが有効で、validate_password.policy1(MEDIUM) 以上に設定されている場合にのみ有効になります。 - パスワード内の大文字の数も小文字の数も
validate_password.mixed_case_countより少なくすることはできません。たとえば、変数が1に設定されている場合、パスワードには少なくとも 1 つの大文字と 1 つの小文字が含まれている必要があります。
validate_password.number_count v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲: TiDBセルフマネージドの場合は
[0, 2147483647]TiDB Cloudサーバーレス[1, 2147483647]はTiDB Cloud専用 - この変数は、パスワードの複雑さのチェックにおけるチェック項目です。パスワードに十分な数字が含まれているかどうかをチェックします。この変数は、
validate_password.enableが有効で、validate_password.policy1(MEDIUM) 以上に設定されている場合にのみ有効になります。
validate_password.policy v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
1 - 値
2オプション: TiDB Self-Managed TiDB Cloudサーバーレス1は01TiDB Cloud専用は2 - この変数は、パスワードの複雑さのチェックのポリシーを制御します。この変数は、
validate_password.enable有効になっている場合にのみ有効になります。この変数の値によって、validate_password.check_user_nameを除く他のvalidate-password変数がパスワードの複雑さのチェックで有効になるかどうかが決まります。 - この変数の値は
0、1、または2(LOW、MEDIUM、STRONG に対応) になります。ポリシー レベルによってチェック内容が異なります。- 0 または LOW: パスワードの長さ。
- 1 または MEDIUM: パスワードの長さ、大文字と小文字、数字、特殊文字。
- 2 または強力: パスワードの長さ、大文字と小文字、数字、特殊文字、辞書の一致。
validate_password.special_char_count v6.5.0 の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
1 - 範囲: TiDBセルフマネージドの場合は
[0, 2147483647]TiDB Cloudサーバーレス[1, 2147483647]はTiDB Cloud専用 - この変数は、パスワードの複雑さのチェックにおけるチェック項目です。パスワードに十分な特殊文字が含まれているかどうかをチェックします。この変数は、
validate_password.enableが有効で、validate_password.policyが1(MEDIUM) 以上に設定されている場合にのみ有効になります。
バージョン
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値:
8.0.11-TiDB-(tidb バージョン) - この変数は、MySQL のバージョンに続いて TiDB のバージョンを返します。たとえば、「8.0.11-TiDB-v7.5.3」などです。
バージョンコメント
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: (文字列)
- この変数は、TiDB バージョンに関する追加の詳細を返します。たとえば、「TiDB Server (Apache License 2.0) Community Edition、MySQL 8.0 互換」などです。
バージョンコンパイルマシン
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: (文字列)
- この変数は、TiDB が実行されている CPUアーキテクチャの名前を返します。
バージョン_コンパイル_os
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値: (文字列)
- この変数は、TiDB が実行されている OS の名前を返します。
待機タイムアウト
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 整数
- デフォルト値:
28800 - 範囲:
[0, 31536000] - 単位: 秒
- この変数は、ユーザー セッションのアイドル タイムアウトを制御します。値が 0 の場合、無制限を意味します。
警告回数
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値:
0 - この読み取り専用変数は、以前実行されたステートメントで発生した警告の数を示します。
ウィンドウ処理_高精度の使用
- 範囲: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON - この変数は、ウィンドウ関数を計算するときに高精度モードを使用するかどうかを制御します。