システム変数
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 コアの数までになります。
- バイトの場合、安全な値は通常、システムメモリの量よりも小さくなります。
- 時間の場合、単位が秒またはミリ秒になる可能性があることに注意してください。
同じ単位を使用する変数は、同じリソース セットを競合する可能性があります。
バージョン7.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
の属性を持つ列の値を明示的に指定できるようにするかどうかを決定します。
認証_ldap_sasl_auth_method_nameバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
SCRAM-SHA-1
- 可能な値:
SCRAM-SHA-1
、SCRAM-SHA-256
、およびGSSAPI
。 - LDAP SASL 認証の場合、この変数は認証方法の名前を指定します。
認証_ldap_sasl_bind_base_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL認証の場合、この変数は検索ツリー内の検索範囲を制限します。1節
AS ...
指定せずにユーザーが作成された場合、TiDBはユーザー名に基づいてLDAPサーバー内のdn
自動的に検索します。
認証_ldap_sasl_bind_root_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用される
dn
指定します。
認証_ldap_sasl_bind_root_pwdバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数はユーザーを検索するために LDAPサーバーにログインするために使用されるパスワードを指定します。
認証_ldap_sasl_ca_pathバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は StartTLS 接続の証明機関ファイルの絶対パスを指定します。
認証_ldap_sasl_init_pool_sizeバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
10
- 範囲:
[1, 32767]
- LDAP SASL 認証の場合、この変数は LDAPサーバーへの接続プール内の初期接続を指定します。
認証_ldap_sasl_max_pool_sizeバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1000
- 範囲:
[1, 32767]
- LDAP SASL 認証の場合、この変数は LDAPサーバーへの接続プールの最大接続数を指定します。
認証_ldap_sasl_server_hostバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP SASL 認証の場合、この変数は LDAPサーバーのホスト名または IP アドレスを指定します。
認証_ldap_sasl_server_portバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
389
- 範囲:
[1, 65535]
- LDAP SASL 認証の場合、この変数は LDAPサーバーの TCP/IP ポート番号を指定します。
認証_ldap_sasl_tlsバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- LDAP SASL 認証の場合、この変数はプラグインによる LDAPサーバーへの接続が StartTLS で保護されるかどうかを制御します。
認証_ldap_simple_auth_method_nameバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
SIMPLE
- 可能な値:
SIMPLE
。 - LDAP簡易認証の場合、この変数は認証方式名を指定します。サポートされる値は
SIMPLE
のみです。
認証_ldap_simple_bind_base_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP簡易認証の場合、この変数は検索ツリー内の検索範囲を制限します。1節
AS ...
指定せずにユーザーが作成された場合、TiDBはユーザー名に基づいてLDAPサーバー内のdn
自動的に検索します。
認証_ldap_simple_bind_root_dnバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は、ユーザーを検索するために LDAPサーバーにログインするために使用される
dn
指定します。
認証_ldap_simple_bind_root_pwdバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数はユーザーを検索するために LDAPサーバーにログインするために使用されるパスワードを指定します。
認証_ldap_simple_ca_pathバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は StartTLS 接続の証明機関ファイルの絶対パスを指定します。
認証_ldap_simple_init_pool_sizeバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
10
- 範囲:
[1, 32767]
- LDAP 簡易認証の場合、この変数は LDAPサーバーへの接続プール内の初期接続を指定します。
認証_ldap_simple_max_pool_sizeバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1000
- 範囲:
[1, 32767]
- LDAP 簡易認証の場合、この変数は LDAPサーバーへの接続プールの最大接続数を指定します。
認証_ldap_simple_server_hostバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- LDAP 簡易認証の場合、この変数は LDAPサーバーのホスト名または IP アドレスを指定します。
認証_ldap_simple_server_portバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
389
- 範囲:
[1, 65535]
- LDAP 簡易認証の場合、この変数は LDAPサーバーの TCP/IP ポート番号を指定します。
認証_ldap_simple_tlsバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- LDAP 簡易認証の場合、この変数はプラグインによる LDAPサーバーへの接続が StartTLS で保護されるかどうかを制御します。
自動増分
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1
- 範囲:
[1, 65535]
- 列に割り当てる
AUTO_INCREMENT
値のステップサイズと、AUTO_RANDOM
IDの割り当てルールを制御します。多くの場合、auto_increment_offset
と組み合わせて使用されます。
自動インクリメントオフセット
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1
- 範囲:
[1, 65535]
- 列に割り当てる
AUTO_INCREMENT
値の初期オフセットと、AUTO_RANDOM
IDの割り当てルールを制御します。この設定は、多くの場合、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-cbc
aes-256-ecb
aes-128-cbc
aes-192-cbc
aes-128-ecb
aes-192-ecb
aes-128-ofb
aes-192-ofb
aes-256-ofb
aes-128-cfb
aes-192-cfb
aes-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 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
300
- 範囲:
[0, 2147483647]
- 単位: ミリ秒
- 実行時間がしきい値を超える DDL 操作をログに記録します。
デフォルト認証プラグイン
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
mysql_native_password
tidb_auth_token
なtidb_sm3_password
:mysql_native_password
authentication_ldap_sasl
およびauthentication_ldap_simple
caching_sha2_password
- この変数は、サーバーとクライアント間の接続が確立されるときにサーバーが通知する認証方法を設定します。
tidb_sm3_password
方法で認証するには、 TiDB-JDBC使用して TiDB に接続できます。
default_collation_for_utf8mb4バージョン7.4.0の新機能
- スコープ: グローバル | セッション
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
utf8mb4_bin
utf8mb4_0900_ai_ci
utf8mb4_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()
関数で使用される週の形式を設定します。
パスワードの有効期限が切れた場合の切断v6.5.0 の新機能
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は読み取り専用です。パスワードの有効期限が切れたときにTiDBがクライアント接続を切断するかどうかを示します。変数が
ON
に設定されている場合、パスワードの有効期限が切れるとクライアント接続は切断されます。変数がOFF
に設定されている場合、クライアント接続は「サンドボックスモード」に制限され、ユーザーはパスワードリセット操作のみを実行できます。
- 期限切れのパスワードに対するクライアント接続のデフォルトの動作を変更する必要がある場合は、 TiDB Cloudサポート連絡してください。
div_precision_incrementバージョン8.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
4
- 範囲:
[0, 30]
- この変数は、
/
演算子を用いた除算の結果のスケールを何桁増やすかを指定します。この変数はMySQLと同じです。
エラー数
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- メッセージを生成した最後のステートメントから発生したエラーの数を示す読み取り専用変数。
外部キーチェック
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v6.6.0 より前のバージョンでは、デフォルト値は
OFF
です。v6.6.0 以降では、デフォルト値はON
です。 - この変数は、外部キー制約チェックを有効にするかどうかを制御します。
グループ連結最大長
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1024
- 範囲:
[4, 18446744073709551615]
GROUP_CONCAT()
関数内の項目の最大バッファ サイズ。
openssl がある
- 範囲: なし
- ヒント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 文を自動的に実行することを許可します。3 またはCONNECTION_ADMIN
SUPER
権限がある場合、このinit_connect
文は実行されません。9init_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 の新機能
last_plan_from_cache v4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、前の
execute
ステートメントで使用された実行プランがプラン キャッシュから直接取得されたかどうかを示すために使用されます。
last_sql_use_allocバージョン6.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 と互換性があります。
パスワード履歴v6.5.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- 範囲:
[0, 4294967295]
- この変数は、パスワード再利用ポリシーを設定するために使用されます。このポリシーにより、TiDBはパスワード変更回数に基づいてパスワードの再利用を制限できます。デフォルト値の
0
、パスワード変更回数に基づくパスワード再利用ポリシーを無効にすることを意味します。この変数を正の整数N
に設定すると、過去N
のパスワードの再利用は許可されません。
mpp_exchange_compression_mode v6.6.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- デフォルト値:
UNSPECIFIED
UNSPECIFIED
HIGH_COMPRESSION
FAST
:NONE
- この変数は、MPP Exchange演算子のデータ圧縮モードを指定するために使用されます。この変数は、TiDBがバージョン番号
1
のMPP実行プランを選択した場合に有効になります。変数値の意味は以下のとおりです。UNSPECIFIED
: 未指定を意味します。TiDBは圧縮モードを自動的に選択します。現在、TiDBはFAST
モードを自動的に選択します。NONE
: データ圧縮は使用されません。FAST
:高速モード。全体的なパフォーマンスは良好で、圧縮率はHIGH_COMPRESSION
未満です。HIGH_COMPRESSION
: 高圧縮比モード。
mpp_version v6.6.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- デフォルト値:
UNSPECIFIED
2
1
0
: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]
- 単位: ミリ秒
- ステートメントの最大実行時間。デフォルト値は無制限(ゼロ)です。
注記:
バージョン6.4.0より前では、システム変数
max_execution_time
すべての種類のステートメントに適用されます。バージョン6.4.0以降では、この変数は読み取り専用ステートメントの最大実行時間のみを制御します。タイムアウト値の精度は約100ミリ秒です。つまり、ステートメントは指定したミリ秒数で正確に終了しない可能性があります。
ヒントMAX_EXECUTION_TIME
が指定されたSQL文の場合、その文の最大実行時間は、この変数ではなくヒントによって制限されます。ヒントは、 SQL FAQでで説明したSQLバインディングでも使用できます。
最大準備済みステートメント数
- 範囲: グローバル
- クラスターに持続: はい
- ヒント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)
pd_enable_follower_handle_regionバージョン7.6.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、アクティブPDFollower機能を有効にするかどうかを制御します(現在はリージョン情報のリクエストにのみ適用されます)。値が
OFF
場合、TiDBはPDリーダーからのみリージョン情報を取得します。値がON
場合、TiDBはリージョン情報のリクエストをすべてのPDサーバーに均等に分散し、PDフォロワーもリージョンリクエストを処理できるため、PDリーダーのCPU負荷が軽減されます。 - アクティブ PDFollowerを有効にするシナリオ:
- 多数のリージョンを持つクラスターでは、ハートビートの処理とタスクのスケジュール設定によるオーバーヘッドが増加するため、PD リーダーの CPU 負荷が高くなります。
- 多数の TiDB インスタンスを含む TiDB クラスターでは、リージョン情報に対する要求の同時性が高いため、PD リーダーの CPU 負荷が高くなります。
プラグインディレクトリ
注記:
この変数は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セルフマネージドTiDB Cloudサーバーレス場合は
OFF
ON
場合はTiDB Cloud専用
- この変数は、TiDB へのすべての接続がローカル ソケット上にあるか、TLS を使用していることを保証します。
- この変数を
ON
に設定すると、TLSが有効になっているセッションからTiDBに接続する必要があります。これにより、TLSが正しく設定されていない場合に発生するロックアウトシナリオを回避できます。 - この設定は以前は
tidb.toml
オプション (security.require-secure-transport
) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。 - v6.5.6、v7.1.2、v7.5.1、v8.0.0 以降では、Security拡張モード (SEM) が有効になっている場合、ユーザーの接続の問題を回避するために、この変数を
ON
に設定することは禁止されています。
skip_name_resolve v5.2.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
tidb-server
インスタンスが接続ハンドシェイクの一部としてホスト名を解決するかどうかを制御します。 - DNS が信頼できない場合は、このオプションを有効にしてネットワーク パフォーマンスを向上させることができます。
注記:
skip_name_resolve=ON
場合、アイデンティティにホスト名を持つユーザーはサーバーにログインできなくなります。例:
CREATE USER 'appuser'@'apphost' IDENTIFIED BY 'app-password';この例では、
apphost
IPアドレスまたはワイルドカード(%
)に置き換えることをお勧めします。
ソケット
- 範囲: なし
- ヒント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バージョン6.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、テーブルに主キーが必要であるという要件を強制するかどうかを制御します。この変数を有効にすると、主キーのないテーブルを作成または変更しようとするとエラーが発生します。
- この機能は、MySQL 8.0 の同様の名前の
sql_require_primary_key
に基づいています。 - TiCDCを使用する場合は、この変数を有効にすることを強くお勧めします。これは、MySQLシンクへの変更をレプリケーションするには、テーブルに主キーが必要であるためです。
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が最初にブートストラップされた時点のシステムタイムゾーンを示します。1も参照してください
time_zone
tidb_adaptive_closest_read_threshold v6.3.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
4096
- 範囲:
[0, 9223372036854775807]
- 単位: バイト
- この変数は、
tidb_replica_read
closest-adaptive
に設定した場合に、TiDBサーバーが同じアベイラビリティサーバーにあるレプリカに読み取りリクエストを送信する際のしきい値を制御するために使用されます。推定結果がこのしきい値以上の場合、TiDBは同じアベイラビリティゾーンにあるレプリカに読み取りリクエストを送信することを優先します。それ以外の場合、TiDBはリーダーレプリカに読み取りリクエストを送信します。
tidb_allow_tiflash_copバージョン7.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バージョン5.2.0の新機能
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値:
json_array, json_array_append, json_array_insert, json_contains, json_contains_path, json_depth, json_extract, json_insert, json_keys, json_length, json_merge_patch, json_merge_preserve, json_object, json_pretty, json_quote, json_remove, json_replace, json_search, json_set, json_storage_size, json_type, json_unquote, json_valid, lower, md5, reverse, tidb_shard, upper, vitess_hash
- この読み取り専用変数は、 表現インデックス作成に使用できる関数を表示するために使用されます。
tidb_allow_mppバージョン5.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 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、列の
AUTO_INCREMENT
のプロパティをALTER TABLE MODIFY
またはALTER TABLE CHANGE
ステートメントの実行で削除することを許可するかどうかを設定するために使用されます。デフォルトでは許可されていません。
tidb_analyze_distsql_scan_concurrency v7.6.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
4
- 範囲:
[1, 4294967295]
- この変数は、
ANALYZE
操作を実行するときにscan
操作の同時実行性を設定するために使用されます。
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バージョン7.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)
tidb_auto_analyze_end_time
- 範囲: グローバル
- クラスターに持続: はい
- ヒント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に該当: いいえ
- デフォルト値:
128
。v7.6.0 より前では、デフォルト値は1
です。 - 範囲:
[1, 1024]
- この変数は、パーティションテーブルを分析するときに TiDB 自動的に分析する実行するパーティションの数を指定します (つまり、パーティションテーブルで統計情報を自動的に収集します)。
- この変数の値がパーティション数より小さい場合、TiDBはパーティションテーブルのすべてのパーティションを複数のバッチで自動的に分析します。この変数の値がパーティション数以上の場合、TiDBはパーティションテーブルのすべてのパーティションを同時に分析します。
- パーティションテーブルのパーティション数がこの変数値よりもはるかに多く、自動分析に時間がかかる場合は、この変数の値を増やして時間の消費を減らすことができます。
tidb_auto_analyze_ratio
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: フロート
- デフォルト値:
0.5
- 範囲:
(0, 1]
。v8.0.0 以前のバージョンの範囲は[0, 18446744073709551615]
です。 - この変数は、TiDBがバックグラウンドスレッドでテーブル統計情報を更新するために自動分析を実行する際のしきい値を設定するために使用されます。例えば、値が
ANALYZE TABLE
の場合、テーブル内の行の50%以上が変更された時点で自動分析がトリガーされます。3とtidb_auto_analyze_start_time
tidb_auto_analyze_end_time
指定することで、自動分析を特定の時間帯のみに実行するように制限できます。
注記:
この機能を使用するには、システム変数
tidb_enable_auto_analyze
ON
に設定する必要があります。
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_batch_commit
- スコープ: セッション
- ヒント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バージョン6.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
4000
- 範囲:
[0, 4294967295]
ALTER DATABASE SET TIFLASH REPLICA
使用してTiFlashレプリカを追加する場合、許可される使用不可テーブルの最大数を指定します。使用不可テーブルの数がこの制限を超えると、操作が停止するか、残りのテーブルに対するTiFlashレプリカの設定に非常に時間がかかります。
tidb_broadcast_join_threshold_countバージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
10240
- 範囲:
[0, 9223372036854775807]
- 単位: 行
- 結合操作のオブジェクトがサブクエリに属している場合、オプティマイザはサブクエリの結果セットのサイズを推定できません。この場合、サイズは結果セットの行数によって決定されます。サブクエリの推定行数がこの変数の値より少ない場合は、ブロードキャストハッシュ結合アルゴリズムが使用されます。それ以外の場合は、シャッフルハッシュ結合アルゴリズムが使用されます。
- この変数は、
tidb_prefer_broadcast_join_by_exchange_data_size
が有効になった後は有効になりません。
tidb_broadcast_join_threshold_sizeバージョン5.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_checksum_table_concurrency
- スコープ: セッション
- ヒント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に該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
この変数は悲観的トランザクションにのみ適用されます。楽観的トランザクションの場合は、代わりに
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バージョン6.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バージョン6.3.0の新機能
注記:
- TiDB Cloud専用クラスターを使用している場合、この変数を使用してインデックス作成の速度を向上させるには、TiDB クラスターが AWS でホストされており、TiDB ノードのサイズが少なくとも 8 vCPU であることを確認してください。
- TiDB Cloudサーバーレスクラスターの場合、この変数は読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、インデックス作成時のバックフィル速度を向上させるために、
ADD INDEX
とCREATE INDEX
のアクセラレーションを有効にするかどうかを制御します。この変数の値をON
に設定すると、大量のデータを持つテーブルでのインデックス作成のパフォーマンスが向上します。 - バージョン7.1.0以降、インデックス高速化操作はチェックポイントをサポートします。TiDBオーナーノードが再起動されたり、障害により変更されたりした場合でも、TiDBは定期的に自動更新されるチェックポイントから進捗状況を回復できます。
- 完了した
ADD INDEX
操作が高速化されているかどうかを確認するには、ADMIN SHOW DDL JOBS
ステートメントを実行して、JOB_TYPE
列にingest
表示されるかどうかを確認します。
tidb_enable_dist_taskバージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON
- この変数は、 TiDB 分散実行フレームワーク (DXF)有効にするかどうかを制御するために使用されます。フレームワークを有効にすると、DDLやインポートなどのDXFタスクは、クラスター内の複数のTiDBノードによって分散実行され、完了します。
- TiDB v7.1.0 以降、DXF はパーティション化されたテーブルに対して
ADD INDEX
ステートメントを分散して実行することをサポートします。 - TiDB v7.2.0 以降、DXF はインポート ジョブの
IMPORT INTO
ステートメントの分散実行をサポートします。 - TiDB v8.1.0以降では、この変数はデフォルトで有効になっています。DXFが有効になっているクラスターをv8.1.0以降にアップグレードする場合は、アップグレード前にDXFを無効(
tidb_enable_dist_task
をOFF
に設定)にしてください。これにより、アップグレード中にADD INDEX
操作が発生し、データインデックスの不整合が発生するのを回避できます。アップグレード後に、DXFを手動で有効にすることができます。 - この変数の名前は
tidb_ddl_distribute_reorg
から変更されました。
tidb_cloud_storage_uriバージョン7.4.0の新機能
注記:
現在、 グローバルソートプロセスはTiDBノードの計算リソースとメモリリソースを大量に消費しています。ユーザーの業務アプリケーションの実行中にオンラインでインデックスを追加するなどのシナリオでは、クラスターに新しいTiDBノードを追加し、これらのノードに
tidb_service_scope
変数を設定し、これらのノードに接続してタスクを作成することをお勧めします。これにより、分散フレームワークはこれらのノードにタスクをスケジュールし、他のTiDBノードからのワークロードを分離することで、ADD INDEX
やIMPORT INTO
などのバックエンドタスクの実行がユーザーの業務アプリケーションに与える影響を軽減します。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
""
- この変数は、Amazon S3クラウドstorageのURIを指定してグローバルソート有効にするために使用されます。3 TiDB 分散実行フレームワーク (DXF)有効にすると、URIを設定し、storageへのアクセスに必要な権限を持つ適切なクラウドstorageパスを指定することで、グローバルソート機能を使用できるようになります。詳細については、 Amazon S3 URI 形式参照してください。
- 次のステートメントでは、グローバル ソート機能を使用できます。
ADD INDEX
のステートメント。- インポート ジョブの
IMPORT INTO
ステートメント。
tidb_ddl_error_count_limit
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
512
- 範囲:
[0, 9223372036854775807]
- この変数は、DDL操作が失敗した場合の再試行回数を設定するために使用されます。再試行回数がパラメータ値を超えると、誤ったDDL操作はキャンセルされます。
tidb_ddl_flashback_concurrencyバージョン6.3.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
64
- 範囲:
[1, 256]
- この変数は
FLASHBACK CLUSTER
の同時実行性を制御します。
tidb_ddl_reorg_batch_size
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
256
- 範囲:
[32, 10240]
- 単位: 行
- この変数は、DDL操作のフェーズ
re-organize
におけるバッチサイズを設定するために使用されます。例えば、TiDBがフェーズADD INDEX
実行する場合、インデックスデータはtidb_ddl_reorg_worker_cnt
(number)個の同時ワーカーによってバックフィルされる必要があります。各ワーカーは、インデックスデータをバッチでバックフィルします。tidb_ddl_enable_fast_reorg
OFF
に設定すると、ADD INDEX
トランザクションとして実行されます。11ADD INDEX
実行中に、対象列にUPDATE
やREPLACE
などの更新操作が多数発生する場合、バッチサイズが大きいほどトランザクションの競合が発生する可能性が高くなります。このような場合は、バッチサイズを小さく設定することをお勧めします。最小値は 32 です。- トランザクションの競合がない場合、または
tidb_ddl_enable_fast_reorg
ON
に設定されている場合は、バッチサイズを大きく設定できます。これによりデータのバックフィルは高速化されますが、TiKVへの書き込み負荷も増加します。適切なバッチサイズについては、tidb_ddl_reorg_worker_cnt
の値も参照する必要があります。参考としてオンラインワークロードとADD INDEX
操作のインタラクションテスト参照してください。
tidb_ddl_reorg_priority
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
PRIORITY_LOW
PRIORITY_HIGH
PRIORITY_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_enable_fast_create_table
バージョン8.0.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数はTiDB 高速テーブル作成有効にするかどうかを制御するために使用されます。
- v8.0.0 以降、TiDB は
tidb_enable_fast_create_table
使用したCREATE TABLE
ステートメントによるテーブル作成の高速化をサポートしています。 - この変数は、v7.6.0で導入された変数
tidb_ddl_version
から名前が変更されました。v8.0.0以降では、tidb_ddl_version
無効になります。
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_version
から2
に設定して統計情報を収集することが前提条件です。この評価はパフォーマンスに若干影響を与える可能性があります。 - 変数が
0.8
以外の値に設定されている場合、TiDB はそれに応じてnot like
、not rlike
、not regexp
の推定値を調整します。
tidb_disable_txn_auto_retry
スコープ: セッション | グローバル
クラスターに持続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
ON
この変数は、明示的な楽観的トランザクションの自動再試行を無効にするかどうかを設定するために使用されます。デフォルト値の
ON
、TiDBでトランザクションが自動的に再試行されないことを意味します。3COMMIT
、アプリケーションレイヤーで処理する必要があるエラーが返される可能性があることを意味します。値を
OFF
に設定すると、TiDBはトランザクションを自動的に再試行し、COMMIT
ステートメントで発生するエラーが減少します。この変更を行う際は、更新内容が失われる可能性があるため、ご注意ください。この変数は、TiDB内で自動的にコミットされる暗黙的なトランザクションと内部的に実行されるトランザクションには影響しません。これらのトランザクションの最大再試行回数は、値
tidb_retry_limit
によって決定されます。詳細については再試行の制限参照してください。
この変数は楽観的トランザクションにのみ適用され、悲観的トランザクションには適用されません。悲観的トランザクションの再試行回数は256回です。
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)
値をすばやく取得できます。
tidb_dml_batch_size
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒント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_size
LOAD DATA
文には適用されなくなりました。
tidb_dml_typeバージョン8.0.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当:はい
- タイプ: 文字列
- デフォルト値:
"standard"
- 値
"bulk"
オプション:"standard"
- この変数は、DML ステートメントの実行モードを制御します。
"standard"
標準の DML 実行モードを示します。このモードでは、TiDB トランザクションはコミット前にメモリにキャッシュされます。このモードは、競合が発生する可能性のある高同時実行トランザクションのシナリオに適しており、デフォルトの推奨実行モードです。"bulk"
バルク DML 実行モードを示します。これは、大量のデータが書き込まれ、TiDB で過剰なメモリ使用が発生するシナリオに適しています。- TiDB トランザクションの実行中、データは TiDBメモリに完全にキャッシュされるのではなく、メモリ使用量を削減し、書き込み負荷を軽減するために TiKV に継続的に書き込まれます。
"bulk"
モードの影響を受けるのは、INSERT
、UPDATE
、REPLACE
、DELETE
文のみです。11 モードではパイプ"bulk"
実行が行われるため、更新によって競合が発生した場合、INSERT IGNORE ... ON DUPLICATE UPDATE ...
を使用するとDuplicate entry
エラーが発生する可能性があります。一方、"standard"
モードではIGNORE
キーワードが設定されているため、このエラーは無視され、ユーザーには返されません。"bulk"
モードは、大量のデータが競合なく書き込まれるシナリオにのみ適しています。このモードは書き込み競合の処理には効率的ではありません。書き込み競合により、大規模なトランザクションが失敗し、ロールバックされる可能性があるためです。"bulk"
モードは、自動コミットが有効になっているステートメントにのみ適用され、pessimistic-auto-commit
構成項目をfalse
に設定する必要があります。"bulk"
モードを使用してステートメントを実行する場合は、実行プロセス中にメタデータロック有効なままであることを確認してください。"bulk"
モードは一時テーブルおよびキャッシュされたテーブルでは使用できません。"bulk"
モードは、外部キー制約チェックが有効になっている場合、外部キーを含むテーブルや外部キーによって参照されるテーブルでは使用できません(foreign_key_checks = ON
)。- 環境が
"bulk"
モードをサポートしていない、または互換性がない場合、TiDBは"standard"
モードにフォールバックし、警告メッセージを返します。5モードが使用されているかどうかを確認するには、"bulk"
フィールドpipelined
値をtidb_last_txn_info
で確認できます。11true
値は、"bulk"
モードが使用されていることを示します。 "bulk"
モードで大規模なトランザクションを実行すると、トランザクションの実行時間が長くなる可能性があります。このモードのトランザクションでは、トランザクションロックの最大TTLはmax-txn-ttl
と24時間のうち大きい方の値になります。また、トランザクションの実行時間がtidb_gc_max_wait_time
で設定された値を超えると、GCによってトランザクションが強制的にロールバックされ、失敗する可能性があります。- TiDB が
"bulk"
モードでトランザクションを実行する場合、トランザクション サイズは TiDB 構成項目txn-total-size-limit
によって制限されません。 - このモードはパイプラインDML機能によって実装されています。詳細な設計とGitHubの問題については、 パイプラインDMLと#50215参照してください。
tidb_enable_1pcバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、1つのリージョンにのみ影響するトランザクションに対して、1フェーズコミット機能を有効にするかどうかを指定するために使用されます。よく使用される2フェーズコミットと比較して、1フェーズコミットはトランザクションコミットのレイテンシーを大幅に短縮し、スループットを向上させることができます。
注記:
- デフォルト値
ON
は新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFF
が使用されます。- TiDB Binlogを有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにTiCDC使用することをお勧めします。
- このパラメータを有効にすると、1フェーズコミットがトランザクションコミットのオプションモードになるというだけです。実際には、最適なトランザクションコミットモードはTiDBによって決定されます。
tidb_enable_analyze_snapshot v6.2.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
ANALYZE
実行する際に履歴データを読み取るか最新データを読み取るかを制御します。この変数がON
に設定されている場合、ANALYZE
ANALYZE
時点で利用可能な履歴データを読み取ります。この変数がOFF
に設定されている場合、ANALYZE
最新データを読み取ります。 - v5.2より前は、
ANALYZE
最新データを読み取ります。v5.2からv6.1までは、ANALYZE
ANALYZE
時点で利用可能な履歴データを読み取ります。
tidb_enable_async_commitバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、2相トランザクションコミットの第2フェーズをバックグラウンドで非同期的に実行する非同期コミット機能を有効にするかどうかを制御します。この機能を有効にすると、トランザクションコミットのレイテンシーを短縮できます。
注記:
- デフォルト値
ON
は新しいクラスターにのみ適用されます。クラスターが以前のバージョンの TiDB からアップグレードされた場合は、代わりに値OFF
が使用されます。- TiDB Binlogを有効にしている場合、この変数を有効にしてもパフォーマンスは向上しません。パフォーマンスを向上させるには、代わりにTiCDC使用することをお勧めします。
- このパラメータを有効にすると、非同期コミットがトランザクションコミットのオプションモードになるというだけです。実際には、最適なトランザクションコミットモードは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_analyze_priority_queueバージョン8.0.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、統計情報の自動収集タスクをスケジュールするための優先キューを有効にするかどうかを制御します。この変数を有効にすると、TiDBは、新しく作成されたインデックスやパーティションが変更されたパーティションテーブルなど、収集する価値の高いテーブルの統計情報を優先的に収集します。さらに、TiDBはヘルススコアが低いテーブルを優先し、キューの先頭に配置します。
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バージョン7.2.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
CHECK
制約機能を有効にするかどうかを制御するために使用されます。
tidb_enable_chunk_rpcバージョン4.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、コプロセッサーで
Chunk
データ エンコーディング形式を有効にするかどうかを制御するために使用されます。
tidb_enable_clustered_indexバージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
ON
ON
INT_ONLY
値:OFF
- この変数は、主キーをデフォルトでクラスター化インデックスとして作成するかどうかを制御するために使用されます。ここでの「デフォルト」とは、ステートメントでキーワード
CLUSTERED
/NONCLUSTERED
が明示的に指定されていないことを意味します。サポートされる値はOFF
、ON
、INT_ONLY
です。OFF
主キーがデフォルトで非クラスター化インデックスとして作成されることを示します。ON
、主キーがデフォルトでクラスター化インデックスとして作成されることを示します。INT_ONLY
、動作が設定項目alter-primary-key
によって制御されることを示します。4alter-primary-key
true
に設定すると、すべての主キーはデフォルトで非クラスター化インデックスとして作成されますfalse
に設定すると、整数列で構成される主キーのみがクラスター化インデックスとして作成されます。
tidb_enable_ddlバージョン6.3.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- デフォルト値:
ON
- 可能
ON
値:OFF
- この変数は、対応する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に該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は読み取り専用です。TiDB TiDB Cloudでは、Security拡張モード(SEM)がデフォルトで有効になっています。
- SEMは、 セキュリティ強化Linuxようなシステムの設計に着想を得ています。MySQL
SUPER
権限を持つユーザーの権限を制限し、代わりにRESTRICTED
な権限を付与する必要があります。これらのきめ細かな権限には、以下のものが含まれます。RESTRICTED_TABLES_ADMIN
:mysql
スキーマのシステム テーブルにデータを書き込み、information_schema
テーブルの機密列を表示する機能。RESTRICTED_STATUS_ADMIN
: コマンドSHOW STATUS
内の機密変数を確認する機能。RESTRICTED_VARIABLES_ADMIN
:SHOW [GLOBAL] VARIABLES
およびSET
の機密変数を表示および設定する機能。RESTRICTED_USER_ADMIN
: 他のユーザーがユーザー アカウントを変更したり削除したりすることを防ぐ機能。
tidb_enable_exchange_partition
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、
exchange partitions with tables
機能を有効にするかどうかを制御します。デフォルト値はON
で、つまりexchange partitions with tables
デフォルトで有効になります。 - この変数はバージョン6.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バージョン6.4.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
tidb_enable_external_ts_read
ON
に設定すると、TiDB はこの変数で指定されたタイムスタンプでデータを読み取ります。
tidb_enable_fast_analyze
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、統計
Fast Analyze
機能を有効にするかどうかを設定するために使用されます。 - 統計
Fast Analyze
機能を有効にすると、TiDBは約10,000行のデータをランダムにサンプリングして統計情報を取得します。データが不均一に分布している場合やデータサイズが小さい場合、統計情報の精度は低くなります。その結果、誤ったインデックスを選択するなど、最適な実行プランが得られない可能性があります。通常のAnalyze
文の実行時間が許容範囲内であれば、Fast Analyze
機能を無効にすることをお勧めします。
tidb_enable_fast_table_checkバージョン7.2.0の新機能
注記:
この変数は多値インデックスおよびプレフィックス インデックスでは機能しません。
- スコープ: セッション | グローバル
- クラスターに永続化: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、テーブル内のデータとインデックスの整合性を迅速にチェックするために、チェックサムベースのアプローチを使用するかどうかを制御します。デフォルト値の
ON
、この機能がデフォルトで有効であることを意味します。 - この変数を有効にすると、TiDB は
ADMIN CHECK [TABLE|INDEX]
ステートメントをより高速に実行できます。
tidb_enable_foreign_keyバージョン6.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_global_indexバージョン7.6.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- 可能
ON
値:OFF
- この変数は、パーティションテーブルの作成をサポートするかどうかを制御します
Global indexes
Global index
現在開発段階にあります。このシステム変数の値を変更することは推奨されません。
tidb_enable_non_prepared_plan_cache
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 準備されていないプランキャッシュ機能を有効にするかどうかを制御します。
- この機能を有効にすると、メモリとCPUのオーバーヘッドが増加する可能性があり、すべての状況に適しているとは限りません。実際のシナリオに応じて、この機能を有効にするかどうかを判断してください。
tidb_enable_non_prepared_plan_cache_for_dmlバージョン7.1.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
。 - この変数は、DML ステートメントに対して準備されていないプランキャッシュ機能を有効にするかどうかを制御します。
tidb_enable_gogc_tuner v6.4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、GOGC チューナーを有効にするかどうかを制御します。
tidb_enable_historical_stats
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、履歴統計を有効にするかどうかを制御します。デフォルト値は
OFF
からON
に変更され、履歴統計がデフォルトで有効になります。
tidb_enable_historical_stats_for_capture
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
PLAN REPLAYER CAPTURE
で取得される情報にデフォルトで履歴統計情報が含まれるかどうかを制御します。デフォルト値のOFF
、履歴統計情報がデフォルトで含まれないことを意味します。
tidb_enable_index_mergeバージョン4.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バージョン6.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、
SET SESSION
およびSET GLOBAL
構文を使用してINSTANCE
スコープの変数を設定することを許可します。 - このオプションは、以前のバージョンの TiDB との互換性を保つためにデフォルトで有効になっています。
tidb_enable_list_partitionバージョン5.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バージョン6.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、TiDBミューテーションチェッカーを有効にするかどうかを制御します。TiDBミューテーションチェッカーは、DML文の実行中にデータとインデックス間の整合性をチェックするツールです。チェッカーが文に対してエラーを返した場合、TiDBはその文の実行をロールバックします。この変数を有効にすると、CPU使用率がわずかに増加します。詳細については、 データとインデックス間の不整合のトラブルシューティング参照してください。
- バージョン6.0.0以降の新しいクラスターの場合、デフォルト値は
ON
です。バージョン6.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
チェックを実行する際の動作を制御します。3ONLY_FULL_GROUP_BY
詳細については、 MySQLドキュメント参照してください。v6.1.0では、TiDBはこのチェックをより厳格かつ正確に処理します。 - バージョンアップグレードによって発生する可能性のある互換性の問題を回避するために、この変数のデフォルト値は v6.1.0 では
OFF
になっています。
tidb_enable_noop_functionsバージョン4.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
OFF
ON
WARN
値:OFF
- デフォルトでは、TiDBは、まだ実装されていない機能の構文を使用しようとするとエラーを返します。変数値が
ON
に設定されている場合、TiDBはそのような利用できない機能を無視します。これは、SQLコードを変更できない場合に役立ちます。 noop
関数を有効にすると、次の動作が制御されます。LOCK IN SHARE MODE
構文SQL_CALC_FOUND_ROWS
構文START TRANSACTION READ ONLY
とSET TRANSACTION READ ONLY
構文tx_read_only
transaction_read_only
read_only
super_read_only
offline_mode
sql_auto_is_null
GROUP 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バージョン6.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に該当:はい
タイプ: ブール値
デフォルト値:
ON
v6.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
バージョン7.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 a
SELECT a, MAX(b) FROM t GROUP BY a ORDER BY a, MAX(b)
として処理します。
tidb_enable_pagingバージョン5.4.0の新機能
スコープ: セッション | グローバル
クラスターに持続: はい
ヒントSET_VARに該当:はい
タイプ: ブール値
デフォルト値:
ON
この変数は、コプロセッサリクエストの送信にページング方式を使用するかどうかを制御します。TiDBバージョン[v5.4.0、v6.2.0)では、この変数は
IndexLookup
演算子にのみ適用されます。v6.2.0以降では、この変数はグローバルに適用されます。v6.4.0以降、この変数のデフォルト値はOFF
からON
に変更されます。ユーザーシナリオ:
- すべての OLTP シナリオでは、ページング方式を使用することをお勧めします。
IndexLookup
とLimit
使用し、Limit
をIndexScan
にプッシュダウンできない読み取りクエリの場合、読み取りクエリのレイテンシーが高くなり、TiKVUnified read pool CPU
の使用率が高くなる可能性があります。このような場合、Limit
演算子は少量のデータしか必要としないため、tidb_enable_paging
をON
に設定すると、TiDBが処理するデータ量が少なくなり、クエリのレイテンシーとリソース消費が削減されます。- Dumpling使用したデータのエクスポートや完全なテーブルスキャンなどのシナリオでは、ページングを有効にすると、TiDB プロセスのメモリ消費を効果的に削減できます。
注記:
TiFlashではなく TiKV をstorageエンジンとして使用する OLAP シナリオでは、ページングを有効にするとパフォーマンスが低下する場合があります。パフォーマンス低下が発生した場合は、この変数を使用してページングを無効にするか、変数
tidb_min_paging_size
とtidb_max_paging_size
使用してページングサイズの行範囲を調整することを検討してください。
tidb_enable_parallel_applyバージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、演算子
Apply
同時実行を有効にするかどうかを制御します。同時実行の数は、変数tidb_executor_concurrency
によって制御されます。演算子Apply
相関サブクエリを処理し、デフォルトでは同時実行がないため、実行速度が遅くなります。この変数の値を1
に設定すると、同時実行数が増加し、実行速度が向上します。現在、演算子Apply
の同時実行はデフォルトで無効になっています。
tidb_enable_parallel_hashagg_spill v8.0.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v8.1.0 の場合は
ON
、v8.1.1 以降の 8.1 パッチ バージョンの場合はOFF
- この変数は、TiDBが並列HashAggアルゴリズムのディスクスピルをサポートするかどうかを制御します。1
ON
場合、並列HashAggアルゴリズムのディスクスピルがトリガーされます。この機能が将来のリリースで一般提供された後、この変数は非推奨となります。
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バージョン7.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バージョン7.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
PLAN REPLAYER CONTINUOUS CAPTURE
機能を有効にするかどうかを制御します。デフォルト値OFF
、この機能を無効にすることを意味します。
tidb_enable_prepared_plan_cacheバージョン6.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% が変更された場合 (変更された行数を合計行数で割った値)、オプティマイザーはこのテーブルの統計が古くなっていると判断します。
- デフォルト(変数値
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 ステートメントは、データをディスクに書き出すなどの他のメモリ制御動作をトリガーします。
tidb_enable_resource_controlバージョン6.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_enable_slow_log
注記:
この 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バージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、無効な
DOUBLE
定義を持つテーブルの作成を許可するかどうかを制御します。この設定は、型の検証がそれほど厳格ではなかった以前のバージョンのTiDBからのアップグレードパスを提供することを目的としています。 - デフォルト値
ON
は MySQL と互換性があります。
例えば、浮動小数点型の精度は保証されていないため、型DOUBLE(10)
は無効とみなされます。3 を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
ON
AUTO
値:OFF
- この変数は、
TABLE PARTITION
機能を有効にするかどうかを設定するために使用されます。ON
、範囲パーティション、ハッシュ パーティション、および 1 つの列による範囲列パーティションを有効にすることを示します。AUTO
ON
と同じように関数。OFF
TABLE PARTITION
機能を無効化することを示します。この場合、パーティションテーブルを作成する構文は実行できますが、作成されるテーブルはパーティション化されたテーブルではありません。
tidb_enable_telemetryバージョン 4.0.2 で新規、バージョン 8.1.0 で非推奨
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この TiDB 変数はTiDB Cloudには適用されません。
tidb_enable_tiflash_read_for_write_stmtバージョン6.3.0の新機能
スコープ: セッション | グローバル
クラスターに持続: はい
ヒントSET_VARに該当: いいえ
タイプ: ブール値
デフォルト値:
ON
この変数は、
INSERT
、DELETE
、UPDATE
を含むSQL文の読み取り操作をTiFlashにプッシュダウンできるかどうかを制御します。例:INSERT INTO SELECT
ステートメントにSELECT
クエリ (一般的な使用シナリオ: TiFlashクエリ結果の具体化 )UPDATE
とDELETE
文の条件フィルタリングWHERE
v7.1.0以降、この変数は非推奨です。1
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バージョン5.4.0の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 Top SQL機能を有効にするかどうかを制御するために使用されます。
tidb_enable_tso_follower_proxyバージョン5.3.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、TSOFollowerプロキシ機能を有効にするかどうかを制御します。値が
OFF
の場合、TiDBはPDリーダーからのみTSOを取得します。値がON
場合、TiDBはTSOリクエストをすべてのPDサーバーに均等に分散し、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バージョン6.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、式を生成列で安全でない方法で置換するかどうかを制御します。デフォルト値は
OFF
で、安全でない置換はデフォルトで無効になっています。詳細については生成された列参照してください。
tidb_enable_vectorized_expression v4.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
ON
- この変数はベクトル化された実行を有効にするかどうかを制御するために使用されます。
tidb_enable_window_function
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、 ウィンドウ関数のサポートを有効にするかどうかを制御します。ウィンドウ関数は予約語を使用する場合があることに注意してください。そのため、TiDBのアップグレード後、正常に実行できるSQL文が解析に失敗する可能性があります。このような場合は、
tidb_enable_window_function
をOFF
に設定できます。
tidb_enable_row_level_checksum
バージョン7.1.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 単一行データの TiCDC データ整合性検証機能を有効にするかどうかを制御するために使用されます。
TIDB_ROW_CHECKSUM()
関数を使用して、行のチェックサム値を取得できます。
tidb_enforce_mppバージョン5.1の新機能
- スコープ: セッション
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- オプティマイザのコスト見積もりを無視し、クエリ実行時に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バージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
5
- 範囲:
[1, 256]
- 単位: スレッド
この変数は、次の SQL 演算子の同時実行性を (1 つの値に) 設定するために使用されます。
index lookup
index lookup join
hash join
hash aggregation
(第partial
フェーズとfinal
フェーズ)window
projection
tidb_executor_concurrency
、管理を容易にするために、次の既存のシステム変数が全体的に組み込まれています。
tidb_index_lookup_concurrency
tidb_index_lookup_join_concurrency
tidb_hash_join_concurrency
tidb_hashagg_partial_concurrency
tidb_hashagg_final_concurrency
tidb_projection_concurrency
tidb_window_concurrency
バージョン5.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 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
600
- 範囲:
[60, 2147483647]
- 単位: 秒
- この変数は、高負荷トランザクションのログ記録のしきい値を制御します。デフォルトでは600秒です。トランザクションの実行時間がしきい値を超え、コミットもロールバックも行われない場合、そのトランザクションは高負荷トランザクションとみなされ、ログに記録されます。
tidb_force_priority
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
NO_PRIORITY
LOW_PRIORITY
DELAYED
値HIGH_PRIORITY
NO_PRIORITY
- この変数は、TiDBサーバー上で実行されるステートメントのデフォルトの優先度を変更するために使用されます。例えば、OLAPクエリを実行している特定のユーザーに、OLTPクエリを実行しているユーザーよりも低い優先度を与えるようにすることができます。
- デフォルト値
NO_PRIORITY
、ステートメントの優先順位が強制的に変更されないことを意味します。
注記:
TiDB v6.6.0以降、 リソース管理サポートします。この機能を使用すると、異なるリソースグループで異なる優先度のSQL文を実行できます。これらのリソースグループに適切なクォータと優先度を設定することで、優先度の異なるSQL文のスケジュールをより適切に制御できます。リソース制御を有効にすると、文の優先度は適用されなくなります。異なるSQL文のリソース使用量を管理するには、 リソース管理使用することをお勧めします。
tidb_gc_concurrencyバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
-1
- 範囲:
[1, 256]
- 単位: スレッド
- GCの第ロックを解決するステップにおけるスレッド数を指定します。値が
-1
の場合、TiDBは使用するガベージコレクションスレッドの数を自動的に決定します。
tidb_gc_enableバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- TiKVのガベージコレクションを有効にします。ガベージコレクションを無効にすると、古いバージョンの行が削除されなくなるため、システムパフォーマンスが低下します。
tidb_gc_life_timeバージョン5.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
10m0s
- 範囲: TiDBセルフマネージドTiDB Cloudサーバーレス場合は
[10m0s, 8760h0m0s]
[10m0s, 168h0m0s]
場合はTiDB Cloud専用 - 各GCでデータが保持される時間制限(Go Durationの形式)。GCが発生すると、現在時刻からこの値を引いた時点が安全点となります。
注記:
- 頻繁に更新されるシナリオでは、
tidb_gc_life_time
に大きな値 (日数または月数) を指定すると、次のような潜在的な問題が発生する可能性があります。
- より大きなstorageの使用
- 大量の履歴データは、特に
select count(*) from t
ような範囲クエリの場合、ある程度パフォーマンスに影響を与える可能性があります。tidb_gc_life_time
より長く実行されているトランザクションがある場合、GC実行中は、このトランザクションが実行を継続できるようにstart_ts
以降のデータが保持されます。例えば、tidb_gc_life_time
10 分に設定されている場合、実行中のすべてのトランザクションのうち、最も早く開始されたトランザクションが 15 分間実行されていると、GCは直近 15 分間のデータを保持します。
tidb_gc_max_wait_time v6.1.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
86400
- 範囲:
[600, 31536000]
- 単位: 秒
- この変数は、アクティブなトランザクションがGCセーフポイントをブロックする最大時間を設定するために使用されます。GCの実行中、セーフポイントはデフォルトで進行中のトランザクションの開始時刻を超えることはありません。アクティブなトランザクションの実行時間がこの変数値を超えない場合、実行時間がこの値を超えるまでGCセーフポイントはブロックされます。
tidb_gc_run_intervalバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
10m0s
- 範囲:
[10m0s, 8760h0m0s]
- GC間隔をGo Durationの形式で指定します(例:
"1h30m"
"15m"
。
tidb_gc_scan_lock_modeバージョン5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
LEGACY
- 可能
LEGACY
値:PHYSICAL
LEGACY
: 古いスキャン方法を使用します。つまり、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_non_prepared_plan_cache_size
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
100
- 範囲:
[1, 100000]
- この変数は、 準備されていないプランキャッシュでキャッシュできる実行プランの最大数を制御します。
tidb_generate_binary_planバージョン6.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バージョン5.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_idle_transaction_timeoutバージョン7.6.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- 範囲:
[0, 31536000]
- 単位: 秒
- この変数は、ユーザーセッションにおけるトランザクションのアイドルタイムアウトを制御します。ユーザーセッションがトランザクション状態にあり、この変数の値を超える期間アイドル状態が続くと、TiDB はセッションを終了します。アイドル状態のユーザーセッションとは、アクティブなリクエストがなく、セッションが新しいリクエストを待機している状態を指します。
- デフォルト値
0
無制限を意味します。
tidb_ignore_prepared_cache_close_stmtバージョン6.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 シナリオでは小さな値を使用します。
tidb_init_chunk_size
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
32
- 範囲:
[1, 32]
- 単位: 行
- この変数は、実行プロセス中の初期チャンクの行数を設定するために使用されます。チャンクの行数は、単一のクエリに必要なメモリ量に直接影響します。クエリ内のすべての列の合計幅とチャンクの行数を考慮することで、単一のチャンクに必要なメモリを概算できます。これにエグゼキューターの同時実行性を組み合わせることで、単一のクエリに必要な合計メモリ量を概算できます。単一のチャンクの合計メモリは16MiBを超えないようにすることをお勧めします。
tidb_isolation_read_engines v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション
- ヒントSET_VARに該当:はい
- デフォルト値:
tikv,tiflash,tidb
- この変数は、TiDB がデータを読み取るときに使用できるstorageエンジン リストを設定するために使用されます。
tidb_last_ddl_infoバージョン6.0.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- タイプ: 文字列
- これは読み取り専用変数です。TiDB内部で、現在のセッションにおける最後のDDL操作の情報を取得するために使用されます。
- "query": 最後の DDL クエリ文字列。
- "seq_num": 各DDL操作のシーケンス番号。DDL操作の順序を識別するために使用されます。
tidb_last_query_info v4.0.14 の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- これは読み取り専用変数です。TiDB内部で、最後のDML文のトランザクション情報を照会するために使用されます。取得される情報は以下のとおりです。
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バージョン7.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
"1s"
- 範囲:
[0s, 1h]
- タイプ: 文字列
- この変数は、負荷ベースのレプリカ読み取りをトリガーするための閾値を設定するために使用されます。リーダーノードの推定キュー時間が閾値を超えると、TiDBはフォロワーノードからのデータの読み取りを優先します。形式は
"100ms"
や"1s"
などの時間間隔です。詳細については、 ホットスポットの問題のトラブルシューティング参照してください。
tidb_load_binding_timeout
バージョン8.0.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
200
- 範囲:
(0, 2147483647]
- 単位: ミリ秒
- この変数は、バインディングの読み込みのタイムアウトを制御するために使用されます。バインディングの読み込みの実行時間がこの値を超えると、読み込みは停止します。
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 インスタンスにログが保持される最大日数を設定するために使用されます。
tidb_low_resolution_tso
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、低精度TSO機能を有効にするかどうかを設定するために使用されます。この機能を有効にすると、TiDBはキャッシュされたタイムスタンプを使用してデータを読み取ります。キャッシュされたタイムスタンプは、デフォルトでは2秒ごとに更新されます。v8.0.0以降では、更新間隔を
tidb_low_resolution_tso_update_interval
単位で設定できます。 - 主な適用可能なシナリオは、古いデータの読み取りが許容される場合に、小さな読み取り専用トランザクションの TSO 取得のオーバーヘッドを削減することです。
tidb_low_resolution_tso_update_interval
バージョン8.0.0の新機能
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
2000
- 範囲:
[10, 60000]
- 単位: ミリ秒
- この変数は、低精度 TSO 機能で使用されるキャッシュされたタイムスタンプの更新間隔をミリ秒単位で設定するために使用されます。
- この変数は
tidb_low_resolution_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バージョン7.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バージョン7.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バージョン7.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 以下です。チャンクの行数は、単一のクエリに必要なメモリ量に直接影響します。クエリ内のすべての列の合計幅とチャンクの行数を考慮すると、1 つのチャンクに必要なメモリを大まかに見積もることができます。これをエグゼキュータの同時実行と組み合わせると、1 つのクエリに必要な合計メモリを大まかに見積もることができます。1 つのチャンクの合計メモリは16 MiB を超えないようにすることをお勧めします。クエリに大量のデータが含まれ、1 つのチャンクですべてのデータを処理できない場合、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バージョン6.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
- 可能
LOG
値:CANCEL
- 単一の SQL ステートメントが
tidb_mem_quota_query
で指定されたメモリクォータを超え、ディスクに書き込むことができない場合に TiDB が実行する操作を指定します。
- デフォルト値は
CANCEL
ですが、TiDB v4.0.2 以前のバージョンではデフォルト値はLOG
です。 - この設定は以前は
tidb.toml
オプション (oom-action
) でしたが、TiDB v6.1.0 以降ではシステム変数に変更されました。
tidb_mem_quota_analyzeバージョン6.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バージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
33554432
(32 MiB) - 範囲:
[0, 9223372036854775807]
- 単位: バイト
- この変数は、
Apply
演算子内のローカル キャッシュのメモリ使用量しきい値を設定するために使用されます。 Apply
の演算子のローカルキャッシュは、Apply
の演算子の計算を高速化するために使用されます。変数を0
に設定すると、Apply
キャッシュ機能を無効にすることができます。
tidb_mem_quota_binding_cacheバージョン6.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より前のバージョンでは、これはセッションスコープ変数です。v6.1.0以降では、
tidb_mem_quota_query
SESSION | GLOBAL
スコープ変数です。 - TiDB v6.5.0より前のバージョンでは、この変数はクエリのメモリクォータのしきい値を設定するために使用されます。実行中のクエリのメモリクォータがこのしきい値を超えると、TiDBは
tidb_mem_oom_action
で定義された操作を実行します。 - TiDB v6.5.0 以降では、この変数はセッションのメモリクォータのしきい値を設定するために使用されます。実行中のセッションのメモリクォータがしきい値を超えた場合、TiDB は
tidb_mem_oom_action
で定義された操作を実行します。TiDB v6.5.0 以降では、セッションのメモリ使用量には、セッション内のトランザクションによって消費されたメモリが含まれることに注意してください。 - 変数値を
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メモリアラームトリガーするメモリ使用率を設定します。
- この変数が
0
または1
に設定されている場合、メモリしきい値アラーム機能は無効になります。 - この変数が
0
より大きく1
より小さい値に設定されている場合、メモリしきい値アラーム機能が有効になっていることを意味します。
tidb_memory_usage_alarm_keep_record_num v6.4.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに持続: はい
- ヒント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バージョン6.2.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
128
- 範囲:
[1, 9223372036854775807]
- 単位: 行
- この変数は、コプロセッサのページング要求処理中の最小行数を設定するために使用されます。この変数の値が小さすぎると、TiDBとTiKV間のRPC要求数が増加し、値が大きすぎると、IndexLookup with Limitを使用したクエリ実行時にパフォーマンスが低下する可能性があります。この変数のデフォルト値は、OLAPシナリオよりもOLTPシナリオで優れたパフォーマンスをもたらします。アプリケーションがstorageエンジンとしてTiKVのみを使用している場合は、OLAPワークロードクエリを実行する際にこの変数の値を増やすことを検討してください。これにより、パフォーマンスが向上する可能性があります。
この図に示すように、 tidb_enable_paging
有効になっている場合、TPCH のパフォーマンスはtidb_min_paging_size
とtidb_max_paging_size
設定によって影響を受けます。縦軸は実行時間で、値が小さいほど優れています。
tidb_mpp_store_fail_ttl
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 期間
- デフォルト値:
60s
- 新しく起動したTiFlashノードはサービスを提供していません。クエリの失敗を防ぐため、TiDBはtidbサーバーからのクエリ送信を新しく起動したTiFlashノードに制限しています。この変数は、新しく起動したTiFlashノードにリクエストが送信されない時間範囲を示します。
tidb_multi_statement_mode v4.0.11 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
OFF
ON
WARN
値:OFF
- この変数は、同じ
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 に設定できます。
tidb_opt_broadcast_cartesian_join
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
1
- 範囲:
[0, 2]
- ブロードキャスト カテシアン結合を許可するかどうかを示します。
0
ブロードキャスト カテシアン結合が許可されないことを意味します。21
tidb_broadcast_join_threshold_count
に基づいて許可されることを意味します。62
テーブル サイズがしきい値を超えても常に許可されることを意味します。- この変数は 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
バージョン7.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- ウィンドウ関数からTopNまたはLimitを導出するの最適化ルールを有効にするかどうかを制御します。
tidb_opt_desc_factor
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: フロート
- 範囲:
[0, 18446744073709551615]
- デフォルト値:
3.0
- TiKVがディスクから1行を降順でスキャンするのにかかるコストを示します。この変数はコストモデル内で内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_disk_factor
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒント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
実行する必要があります。5 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バージョン7.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
EXPLAIN
文が最適化段階で展開される可能性のある定数サブクエリの実行を無効にするかどうかを制御するために使用します。この変数がOFF
に設定されている場合、EXPLAIN
文は最適化段階でサブクエリを事前に展開します。この変数がON
に設定されている場合、EXPLAIN
文は最適化段階でサブクエリを展開しません。詳細については、 サブクエリの展開を無効にする参照してください。
tidb_opt_enable_late_materializationバージョン7.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、 TiFlashの遅い実体化機能を有効にするかどうかを制御するために使用します。TiFlashの遅延マテリアライゼーションは高速スキャンモードでは有効にならないことに注意してください。
- この変数を
OFF
に設定してTiFlashの遅延マテリアライゼーション機能を無効にすると、フィルタ条件(WHERE
句)を含むSELECT
文を処理する際に、 TiFlashはフィルタリング前に必要な列のすべてのデータをスキャンします。この変数をON
に設定してTiFlashの遅延マテリアライゼーション機能を有効にすると、 TiFlashはまずTableScan演算子にプッシュダウンされたフィルタ条件に関連する列データをスキャンし、条件を満たす行をフィルタリングした後、これらの行の他の列のデータをスキャンしてさらなる計算を行うため、IOスキャンとデータ処理の計算を削減できます。
tidb_opt_enable_mpp_shared_cte_executionバージョン7.2.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 TiFlash MPPで非再帰的な共通テーブル式(CTE)実行するかどうかを制御します。デフォルトでは、この変数が無効になっている場合、CTEはTiDBで実行されますが、この機能を有効にした場合と比較してパフォーマンスに大きな差が生じます。
tidb_opt_enable_fuzzy_binding v7.6.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、 データベース間のバインディング機能を有効にするかどうかを制御します。
tidb_opt_fix_control v6.5.3 および v7.1.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: 文字列
- デフォルト値:
""
- この変数は、オプティマイザの内部動作を制御するために使用されます。
- オプティマイザの動作は、ユーザーシナリオやSQL文によって異なる場合があります。この変数は、オプティマイザをよりきめ細かく制御し、アップグレード後にオプティマイザの動作変更によって発生するパフォーマンスの低下を防ぐのに役立ちます。
- より詳しい紹介についてはオプティマイザー修正コントロール参照してください。
tidb_opt_force_inline_cteバージョン6.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、セッション全体の共通テーブル式(CTE)をインライン化するかどうかを制御するために使用されます。デフォルト値は
OFF
で、これはCTEのインライン化がデフォルトで強制されないことを意味します。ただし、MERGE()
ヒントを指定することで、CTEをインライン化することは可能です。この変数をON
に設定すると、このセッション内のすべてのCTE(再帰CTEを除く)が強制的にインライン化されます。
tidb_opt_advanced_join_hintバージョン7.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;aa
列目のt1
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
に設定すると、外部結合演算子はどちらの側のテーブルもビルド側として使用できます。
tidb_opt_network_factor
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当:はい
- タイプ: フロート
- 範囲:
[0, 2147483647]
- デフォルト値:
1.0
- ネットワークを介して1バイトのデータを転送する際の正味コストを示します。この変数はコストモデル内で内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_objectiveバージョン7.4.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: 列挙
- デフォルト値:
moderate
- 可能
determinate
値:moderate
- この変数はオプティマイザの目的を制御します。1
moderate
TiDB v7.4.0 より前のバージョンのデフォルトの動作を維持し、オプティマイザはより多くの情報を使用してより優れた実行プランを生成しようとします。3determinate
はより保守的になる傾向があり、実行プランをより安定させます。 - リアルタイム統計とは、DML文に基づいて自動的に更新された行の総数と変更された行の数です。この変数を
moderate
(デフォルト)に設定すると、TiDBはリアルタイム統計に基づいて実行計画を生成します。この変数をdeterminate
に設定すると、TiDBは実行計画の生成にリアルタイム統計を使用しなくなり、実行計画の安定性が向上します。 - 長期にわたって安定したOLTPワークロードの場合、またはユーザーが既存の実行プランに満足している場合は、予期せぬ実行プランの変更の可能性を低減するために、モード
determinate
の使用をお勧めします。さらに、統計情報の変更を防ぎ、実行プランをさらに安定させるために、モードLOCK STATS
使用することもできます。
tidb_opt_ordering_index_selectivity_ratioバージョン8.0.0の新機能
スコープ: セッション | グローバル
クラスターに持続: はい
ヒントSET_VARに該当:はい
タイプ: フロート
デフォルト値:
-1
範囲:
[-1, 1]
この変数は、SQL ステートメントに
ORDER BY
とLIMIT
句があるが、一部のフィルター条件をカバーしていない場合に、SQL ステートメントORDER BY
一致するインデックスの推定行数を制御します。これは、システム変数tidb_opt_ordering_index_selectivity_thresholdと同じクエリ パターンに対応します。
適格な行が見つかる可能性のある範囲の比率またはパーセンテージを適用することによって実装が異なります。
-1
(デフォルト)または0
未満の値を指定すると、この比率は無効になります。5~1
の0
を指定すると、0%~100%の比率が適用されます(たとえば、0.5
は50%
に相当します)。以下の例では、テーブル
t
は合計 1,000,000 行が含まれています。クエリは同じですが、tidb_opt_ordering_index_selectivity_ratio
の値は異なります。この例のクエリには、行のごく一部(1,000,000 行中 9,000 行)を修飾するWHERE
節の述語が含まれています。7ORDER BY a
サポートするインデックス(インデックスia
)はありますが、b
のフィルターはこのインデックスには含まれていません。実際のデータ分布によっては、WHERE
節とLIMIT 1
に一致する行は、非フィルタリングインデックスのスキャン時に最初にアクセスされる行として見つかる場合もあれば、最悪の場合、ほぼすべての行が処理された後に見つかる場合もあります。各例では、インデックスヒントを用いてestRowsへの影響を示します。最終的なプランの選択は、他のプランの可用性とコストに応じて異なります。
最初の例では、既存の推定式を使用するデフォルト値
-1
を使用しています。デフォルトでは、条件に該当する行が見つかる前に、推定のためにごく一部の行がスキャンされます。> SET SESSION tidb_opt_ordering_index_selectivity_ratio = -1; > EXPLAIN SELECT * FROM t USE INDEX (ia) 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_22 | 1.00 | root | | test.t.a, test.t.b, test.t.c | | └─IndexLookUp_21 | 1.00 | root | | | | ├─IndexFullScan_18(Build) | 109.20 | cop[tikv] | table:t, index:ia(a) | keep order:true | | └─Selection_20(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) | | └─TableRowIDScan_19 | 109.20 | cop[tikv] | table:t | keep order:false | +-----------------------------------+---------+-----------+-----------------------+---------------------------------+2 番目の例では
0
使用されています。これは、条件に該当する行が見つかる前に 0% の行がスキャンされることを想定しています。> SET SESSION tidb_opt_ordering_index_selectivity_ratio = 0; > EXPLAIN SELECT * FROM t USE INDEX (ia) 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_22 | 1.00 | root | | test.t.a, test.t.b, test.t.c | | └─IndexLookUp_21 | 1.00 | root | | | | ├─IndexFullScan_18(Build) | 1.00 | cop[tikv] | table:t, index:ia(a) | keep order:true | | └─Selection_20(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) | | └─TableRowIDScan_19 | 1.00 | cop[tikv] | table:t | keep order:false | +-----------------------------------+---------+-----------+-----------------------+---------------------------------+3番目の例では
0.1
使用しています。これは、条件を満たす行が見つかるまでに行の10%がスキャンされると想定しています。この条件は非常に選択的であり、条件を満たす行は全体の1%のみです。したがって、最悪のシナリオでは、条件を満たす1%を見つけるまでに行の99%をスキャンする必要がある可能性があります。この99%の10%は約9.9%であり、estRowsに反映されています。> SET SESSION tidb_opt_ordering_index_selectivity_ratio = 0.1; > EXPLAIN SELECT * FROM t USE INDEX (ia) 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_22 | 1.00 | root | | test.t.a, test.t.b, test.t.c | | └─IndexLookUp_21 | 1.00 | root | | | | ├─IndexFullScan_18(Build) | 99085.21 | cop[tikv] | table:t, index:ia(a) | keep order:true | | └─Selection_20(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) | | └─TableRowIDScan_19 | 99085.21 | cop[tikv] | table:t | keep order:false | +-----------------------------------+----------+-----------+-----------------------+---------------------------------+4 番目の例では
1.0
使用されています。これは、条件に該当する行が見つかる前に 100% の行がスキャンされることを想定しています。> SET SESSION tidb_opt_ordering_index_selectivity_ratio = 1; > EXPLAIN SELECT * FROM t USE INDEX (ia) 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_22 | 1.00 | root | | test.t.a, test.t.b, test.t.c | | └─IndexLookUp_21 | 1.00 | root | | | | ├─IndexFullScan_18(Build) | 990843.14 | cop[tikv] | table:t, index:ia(a) | keep order:true | | └─Selection_20(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) | | └─TableRowIDScan_19 | 990843.14 | cop[tikv] | table:t | keep order:false | +-----------------------------------+-----------+-----------+-----------------------+---------------------------------+5番目の例も
1.0
使用していますが、a
に述語を追加することで、最悪のシナリオにおけるスキャン範囲を制限しています。これは、WHERE a <= 9000
インデックスに一致し、約9,000行が該当するためです。b
のフィルタ述語がインデックスに存在しないため、b <= 9000
一致する行を見つける前に、約9,000行すべてがスキャンされると考えられます。> SET SESSION tidb_opt_ordering_index_selectivity_ratio = 1; > EXPLAIN SELECT * FROM t USE INDEX (ia) WHERE a <= 9000 AND b <= 9000 ORDER BY a LIMIT 1; +------------------------------------+---------+-----------+-----------------------+------------------------------------+ | id | estRows | task | access object | operator info | +------------------------------------+---------+-----------+-----------------------+------------------------------------+ | Limit_12 | 1.00 | root | | offset:0, count:1 | | └─Projection_22 | 1.00 | root | | test.t.a, test.t.b, test.t.c | | └─IndexLookUp_21 | 1.00 | root | | | | ├─IndexRangeScan_18(Build) | 9074.99 | cop[tikv] | table:t, index:ia(a) | range:[-inf,9000], keep order:true | | └─Selection_20(Probe) | 1.00 | cop[tikv] | | le(test.t.b, 9000) | | └─TableRowIDScan_19 | 9074.99 | cop[tikv] | table:t | keep order:false | +------------------------------------+---------+-----------+-----------------------+------------------------------------+
tidb_opt_ordering_index_selectivity_thresholdバージョン7.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バージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数の値を
ON
に設定すると、オプティマイザは常にフル テーブル スキャンよりも範囲スキャンを優先します。 - 次の例では、
tidb_opt_prefer_range_scan
有効にする前は、TiDBオプティマイザはフルテーブルスキャンを実行します。3tidb_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
使用例
この変数のデフォルト値をビュー。結果から、オプティマイザーがスキャン範囲を構築するために最大64MiBのメモリを使用していることがわかります。
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)
tidb_opt_scan_factor
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: フロート
- 範囲:
[0, 2147483647]
- デフォルト値:
1.5
- TiKVがディスクから1行のデータを昇順でスキャンするのにかかるコストを示します。この変数はコストモデル内で内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_seek_factor
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: フロート
- 範囲:
[0, 2147483647]
- デフォルト値:
20
- TiDBがTiKVにデータを要求するための初期コストを示します。この変数はコストモデル内で内部的に使用されるため、値を変更することは推奨されません。
tidb_opt_skew_distinct_aggバージョン6.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バージョン6.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、MPP モードで
COUNT(DISTINCT)
段階の集約を 3 段階の集約に書き換えるかどうかを指定します。 - この変数は現在、
COUNT(DISTINCT)
を 1 つだけ含む集計に適用されます。
tidb_opt_tiflash_concurrency_factor
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当:はい
- タイプ: フロート
- 範囲:
[0, 2147483647]
- デフォルト値:
24.0
- TiFlash計算の同時実行数を示します。この変数はコストモデル内部で使用されるため、値を変更することは推奨されません。
tidb_opt_use_invisible_indexesバージョン8.0.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、現在のセッションにおいて、オプティマイザがクエリの最適化に目に見えないインデックス選択できるかどうかを制御します。非表示のインデックスはDML文によって維持されますが、クエリオプティマイザでは使用されません。これは、インデックスを永続的に削除する前に二重チェックを行いたい場合などに便利です。この変数を
ON
に設定すると、オプティマイザはセッションにおいてクエリの最適化に非表示のインデックスを選択できます。
tidb_opt_write_row_id
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- スコープ: セッション
- ヒントSET_VARに該当:はい
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、
_tidb_rowid
列目に対してINSERT
REPLACE
ステートメントを実行するかどうかを制御するために使用されます。この変数はUPDATE
TiDBツールを使用してデータをインポートする場合にのみ使用できます。
tidb_optimizer_selectivity_level
- スコープ: セッション
- ヒントSET_VARに該当:はい
- 型: 整数
- デフォルト値:
0
- 範囲:
[0, 2147483647]
- この変数は、オプティマイザの推定ロジックの反復回数を制御します。この変数の値を変更すると、オプティマイザの推定ロジックが大きく変化します。現在、有効な値は
0
のみです。他の値に設定することは推奨されません。
tidb_partition_prune_modeバージョン5.1の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: 列挙
- デフォルト値:
dynamic
dynamic
dynamic-only
値static-only
static
- パーティションテーブルにモード
dynamic
とモードstatic
どちらを使用するかを指定します。動的パーティション分割は、テーブルレベルの完全な統計情報(GlobalStats)が収集された後にのみ有効になることに注意してください。GlobalStatsが収集される前は、TiDBは代わりにモードstatic
使用します。GlobalStatsの詳細については、 動的プルーニングモードでパーティションテーブルの統計を収集する参照してください。動的プルーニングモードの詳細については、 パーティションテーブルの動的プルーニングモード参照してください。
tidb_persist_analyze_options v5.4.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
ON
- この変数は、 構成の永続性を分析する機能を有効にするかどうかを制御します。
tidb_pessimistic_txn_fair_lockingバージョン7.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バージョン6.0.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
STRICT
- 可能
IGNORE
値:STRICT
- この変数は、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
バージョン7.1.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- デフォルト値:
2097152
(2 MiB) - 範囲:
[0, 9223372036854775807]
(バイト単位)。「KiB|MiB|GiB|TiB」単位のメモリ形式もサポートされています。30
無制限を意味します。 - この変数は、準備済みプランキャッシュまたは未準備プランキャッシュにキャッシュできるプランの最大サイズを制御します。プランのサイズがこの値を超える場合、プランはキャッシュされません。詳細については、 準備されたプランキャッシュのメモリ管理と準備されていないプランキャッシュ参照してください。
tidb_pprof_sql_cpuバージョン4.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バージョン6.0.0の新機能
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数はタイムスタンプ取得を最適化するために使用されます。これは、読み取り/書き込み競合がほとんど発生しない、読み取りコミット分離レベルのシナリオに適しています。この変数を有効にすると、グローバルタイムスタンプ取得のレイテンシーとコストを回避し、トランザクションレベルの読み取りレイテンシーを最適化できます。
- 読み書き競合が深刻な場合、この機能を有効にするとグローバルタイムスタンプの取得コストとレイテンシーが増加し、パフォーマンスが低下する可能性があります。詳細についてはコミット読み取り分離レベル参照してください。
tidb_rc_write_check_tsバージョン6.3.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数はタイムスタンプの取得を最適化するために使用され、分離レベル
READ-COMMITTED
の悲観的トランザクションにおいてポイント書き込みの競合が少ないシナリオに適しています。この変数を有効にするとDELETE
ポイント書き込みステートメントの実行中にグローバルタイムスタンプを取得することによるレイテンシーとオーバーヘッドを回避できます。現在、この変数はUPDATE
SELECT ...... FOR UPDATE
3種類のポイント書き込みステートメントに適用できます。ポイント書き込みステートメントとは、主キーまたは一意キーをフィルター条件として使用し、最終実行演算子にPOINT-GET
含まれる書き込みステートメントを指します。 - ポイント書き込みの競合が深刻な場合、この変数を有効にすると余分なオーバーヘッドとレイテンシーが増加し、パフォーマンスの低下につながります。詳細についてはコミット読み取り分離レベル参照してください。
tidb_read_consistency v5.4.0 の新機能
- スコープ: セッション
- ヒントSET_VARに適用: はい ( 非トランザクションDMLステートメント存在する場合、ヒントを使用してこの変数の値を変更しても有効にならない可能性があることに注意してください。)
- タイプ: 文字列
- デフォルト値:
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
ON
MARKER
値:OFF
- この変数は、TiDB ログとスロー ログに記録される SQL ステートメント内のユーザー情報を非表示にするかどうかを制御します。
- デフォルト値は
OFF
です。これは、ユーザー情報は一切処理されないことを意味します。 - 変数を
ON
に設定すると、ユーザー情報は非表示になります。例えば、実行されたSQL文がINSERT INTO t VALUES (1,2)
の場合、ログにはINSERT INTO t VALUES (?,?)
として記録されます。 - 変数を
MARKER
に設定すると、ユーザー情報は‹ ›
で囲まれます。例えば、実行されたSQL文がINSERT INTO t VALUES (1,2)
の場合、ログにはINSERT INTO t VALUES (‹1›,‹2›)
として記録されます。入力に‹
が含まれている場合は‹‹
にエスケープされ、›
含まれている場合は››
にエスケープされます。マークされたログに基づいて、ログを表示するときにマークされた情報を非感応化するかどうかを決定できます。
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
はヌル等価条件が含まれているため、オプティマイザはインデックスアクセスにb=1
使用しません。
tidb_remove_orderby_in_subqueryバージョン6.1.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値: v7.2.0 より前のバージョンでは、デフォルト値は
OFF
です。v7.2.0 以降では、デフォルト値はON
です。 - サブクエリ内の
ORDER BY
句を削除するかどうかを指定します。 - ISO/IEC SQL規格では、
ORDER BY
主にトップレベルクエリの結果をソートするために使用されます。サブクエリの場合、規格では結果をORDER BY
でソートする必要はありません。 - サブクエリの結果をソートするには、通常、ウィンドウ関数を使用するか、外側のクエリで再び
ORDER BY
使用するなど、外側のクエリで処理できます。これにより、最終的な結果セットの順序が保証されます。
tidb_replica_read v4.0 の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当:はい
- タイプ: 列挙
- デフォルト値:
leader
- 可能な値:
leader
、follower
、leader-and-follower
、prefer-leader
、closest-replicas
、closest-adaptive
、learner
。値learner
はバージョン6.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_only
tidb_super_read_only
影響します。tidb_restricted_read_only
をON
に設定すると、tidb_super_read_only
をON
に更新されます。tidb_restricted_read_only
をOFF
に設定すると、tidb_super_read_only
変更されません。tidb_restricted_read_only
がON
場合、tidb_super_read_only
OFF
に設定することはできません。
- 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文がコミットされる前にもこのフラグがチェックされます。これにより、サーバーが読み取り専用モードになった後に、 自動コミット実行されるSQL文によってデータが変更される場合を防止できます。
- この変数を有効にすると、TiDB はコミットされていないトランザクションを次のように処理します。
- コミットされていない読み取り専用トランザクションの場合は、通常どおりトランザクションをコミットできます。
- 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
- 変更されたデータを含むコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
- 読み取り専用モードを有効にすると、ユーザーに
RESTRICTED_REPLICA_WRITER_ADMIN
権限が明示的に付与されない限り、すべてのユーザー (SUPER
権限を持つユーザーを含む) は、データを書き込む可能性のある SQL ステートメントを実行できなくなります。
tidb_request_source_typeバージョン7.4.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
""
"br"
"background"
"stats"
"lightning"
"ddl"
- この変数は、現在のセッションのタスクタイプを明示的に指定するために使用されます。タスクタイプはリソース管理によって識別および制御されます。例:
SET @@tidb_request_source_type = "background"
。
tidb_retry_limit
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
10
- 範囲:
[-1, 9223372036854775807]
- この変数は、楽観的トランザクションの最大再試行回数を設定するために使用されます。トランザクションで再試行可能なエラー(トランザクションの競合、非常に遅いトランザクションのコミット、テーブルスキーマの変更など)が発生した場合、この変数の値に従ってトランザクションが再実行されます。1~
0
tidb_retry_limit
すると自動再試行が無効になることに注意してください。この変数は楽観的的トランザクションにのみ適用され、悲観的トランザクションには適用されません。
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バージョン7.2.0の新機能
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当:はい
- タイプ: 列挙
- デフォルト値:
OFF
- 可能
LOCAL
値:OFF
- ランタイムフィルタのモード、つまりフィルタ送信オペレータとフィルタ受信オペレータの関係を制御します。モードは
OFF
とLOCAL
2つがあります。9OFF
ランタイムフィルタを無効にすることを意味します。11LOCAL
ローカルモードでランタイムフィルタを有効にすることを意味します。詳細については、 ランタイムフィルターモード参照してください。
tidb_runtime_filter_typeバージョン7.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_cache_sizeバージョン8.0.0の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- 範囲:
[0, 9223372036854775807]
- この変数は、TiDBのスキーマキャッシュのサイズを制御します。単位はバイトです。デフォルト値は
0
で、キャッシュ制限機能が無効であることを意味します。この機能を有効にすると、TiDBは設定された値を利用可能な最大メモリ制限として使用し、Least Recently Used (LRU)アルゴリズムを使用して必要なテーブルをキャッシュします。これにより、スキーマ情報によって占有されるメモリが効果的に削減されます。
tidb_schema_version_cache_limit v7.4.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
16
- 範囲:
[2, 255]
- この変数は、TiDBインスタンスにキャッシュできる履歴スキーマバージョンの数を制限します。デフォルト値は
16
で、これはTiDBがデフォルトで16個の履歴スキーマバージョンをキャッシュすることを意味します。 - 通常、この変数を変更する必要はありません。1 ステイル読み取り機能を使用し、DDL 操作が頻繁に実行される場合、スキーマバージョンが頻繁に変更されます。その結果、 ステイル読み取り がスナップショットからスキーマ情報を取得しようとすると、スキーマキャッシュミスにより情報の再構築に長い時間がかかる可能性があります。このような場合は、
tidb_schema_version_cache_limit
の値(例えば32
)を増やすことで、スキーマキャッシュミスの問題を回避できます。 - この変数を変更すると、TiDBのメモリ使用量がわずかに増加します。OOM問題を回避するために、TiDBのメモリ使用量を監視してください。
tidb_server_memory_limitバージョン6.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文をキャンセルします。SQL文のキャンセルに成功すると、TiDBはGolang GCを呼び出してメモリを即時に回収し、メモリ負荷を可能な限り軽減しようとします。
- 最初にキャンセルする SQL 文として、メモリ使用量が
tidb_server_memory_limit_sess_min_size
制限を超える SQL 文のみが選択されます。 - 現在、TiDB は一度に 1 つの SQL 文のみをキャンセルします。TiDB が SQL 文を完全にキャンセルしてリソースを回復した後も、メモリ使用量がこの変数で設定された制限を超えている場合、TiDB は次のキャンセル操作を開始します。
tidb_server_memory_limit_gc_triggerバージョン6.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分間に1回のみGC操作がトリガーされます。
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バージョン7.4.0の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに永続化: いいえ。現在接続している TiDB インスタンスにのみ適用されます。
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値: ""
- オプション値:最大64文字の文字列。有効な文字は、数字
0-9
、文字a-zA-Z
、アンダースコア_
、ハイフン-
です。 - この変数はインスタンスレベルのシステム変数です。これを使用して、 TiDB 分散実行フレームワーク (DXF)配下の各 TiDB ノードのサービススコープを制御できます。DXF は、この変数の値に基づいて、どの TiDB ノードに分散タスクの実行をスケジュールするかを決定します。具体的なルールについては、 タスクのスケジュール参照してください。
tidb_session_aliasバージョン7.4.0の新機能
- スコープ: セッション
- クラスターに存続: いいえ
- ヒントSET_VARに該当:はい
- デフォルト値: ""
- この変数を使用すると、現在のセッションに関連するログの
session_alias
列目の値をカスタマイズできます。この値は、トラブルシューティング時にセッションを識別するのに役立ちます。この設定は、ステートメント実行に関係する複数のノード(TiKVを含む)のログに影響します。この変数の最大長は64文字に制限されており、超過した文字は自動的に切り捨てられます。値の末尾のスペースも自動的に削除されます。
tidb_session_plan_cache_sizeバージョン7.1.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
100
- 範囲:
[1, 100000]
- この変数は、キャッシュできるプランの最大数を制御します。1 と準備されていないプランキャッシュ 準備されたプランキャッシュキャッシュを共有します。
- 以前のバージョンからv7.1.0以降のバージョンにアップグレードすると、この変数は
tidb_prepared_plan_cache_size
と同じ値のままになります。
tidb_shard_allocate_stepバージョン5.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
9223372036854775807
- 範囲:
[1, 9223372036854775807]
- この変数は、
AUTO_RANDOM
またはSHARD_ROW_ID_BITS
属性に割り当てる連続IDの最大数を制御します。通常、1つのトランザクションでは、AUTO_RANDOM
IDまたはSHARD_ROW_ID_BITS
注釈付き行IDが増分され、連続します。この変数を使用することで、大規模トランザクションのシナリオにおけるホットスポットの問題を解決できます。
tidb_simplified_metrics
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数を有効にすると、TiDB は Grafana パネルで使用されないメトリックを収集または記録しません。
tidb_skip_ascii_checkバージョン5.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
実行して、設定されたファイルパスに基づいてスロークエリログを解析します。
tidb_slow_txn_log_thresholdバージョン7.0.0の新機能
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- 型: 符号なし整数
- デフォルト値:
0
- 範囲:
[0, 9223372036854775807]
- 単位: ミリ秒
- この変数は、低速トランザクションログのしきい値を設定します。トランザクションの実行時間がこのしきい値を超えると、TiDBはトランザクションの詳細情報を記録します。値が
0
に設定されている場合、この機能は無効になります。
tidb_スナップショット
- スコープ: セッション
- ヒントSET_VARに該当: いいえ
- デフォルト値: ""
- この変数は、セッションでデータを読み取る時点を設定するために使用されます。例えば、この変数を「2017-11-11 20:20:20」または「400036290571534337」のようなTSO番号に設定すると、現在のセッションはその時点のデータを読み取ります。
tidb_source_idバージョン6.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 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効にするかどうかを制御します。
tidb_stmt_summary_filename v6.6.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- タイプ: 文字列
- デフォルト値:
"tidb-statements.log"
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合、永続データが書き込まれるファイルを指定します。
tidb_stmt_summary_file_max_backups v6.6.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合、保存できるデータファイルの最大数を指定します。
tidb_stmt_summary_file_max_days v6.6.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
3
- 単位:日
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合、永続データファイルを保持する最大日数を指定します。
tidb_stmt_summary_file_max_size v6.6.0 の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
64
- 単位: MiB
- この変数は読み取り専用です。1 ステートメントの概要の永続性有効な場合、永続データファイルの最大サイズを指定します。
tidb_stmt_summary_history_size v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
tidb_stmt_summary_internal_queryバージョン4.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、TiDB の SQL 情報を明細書要約表に含めるかどうかを制御するために使用されます。
tidb_stmt_summary_max_sql_length v4.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
4096
- 範囲:
[0, 2147483647]
- 単位: バイト
- この変数は、 明細書要約表の 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 は制限なしを意味します。
tidb_streamagg_concurrency
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1
- この変数は、クエリが実行される際の
StreamAgg
演算子の同時実行性を設定します。 - この変数を設定することは推奨されません。変数値を変更すると、データの正確性に問題が生じる可能性があります。
tidb_super_read_only v5.3.1 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
tidb_super_read_only
MySQL 変数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文がコミットされる前にもこのフラグがチェックされます。これにより、サーバーが読み取り専用モードになった後に、 自動コミット実行されるSQL文によってデータが変更される場合を防止できます。
- この変数を有効にすると、TiDB はコミットされていないトランザクションを次のように処理します。
- コミットされていない読み取り専用トランザクションの場合は、通常どおりトランザクションをコミットできます。
- 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行する SQL ステートメントは拒否されます。
- 変更されたデータを含むコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
- 読み取り専用モードを有効にすると、ユーザーに
RESTRICTED_REPLICA_WRITER_ADMIN
権限が明示的に付与されない限り、すべてのユーザー (SUPER
権限を持つユーザーを含む) は、データを書き込む可能性のある SQL ステートメントを実行できなくなります。 - システム変数
tidb_restricted_read_only
ON
に設定されている場合、tidb_super_read_only
tidb_restricted_read_only
の影響を受ける場合があります。詳細な影響については、tidb_restricted_read_only
の説明を参照してください。
tidb_sysdate_is_nowバージョン6.0.0の新機能
- スコープ: セッション | グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: ブール値
- デフォルト値:
OFF
- この変数は、関数
SYSDATE
関数NOW
に置き換えるかどうかを制御します。この設定項目は、MySQL オプションsysdate-is-now
と同じ効果があります。
tidb_sysproc_scan_concurrency v6.5.0 の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1
- 範囲:
[1, 4294967295]
。v7.5.0 以前のバージョンの場合、最大値は256
です。 - この変数は、TiDB が内部 SQL ステートメント (統計の自動更新など) を実行するときに実行されるスキャン操作の同時実行性を設定するために使用されます。
tidb_table_cache_leaseバージョン6.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バージョン6.0.0の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
5000
- 範囲:
[1, 10000]
- この変数は、 Top SQLずつ収集される SQL ステートメント タイプの最大数を制御するために使用されます。
tidb_top_sql_max_time_series_countバージョン6.0.0の新機能
注記:
この TiDB 変数はTiDB Cloudには適用されません。
注記:
現在、TiDB ダッシュボードの[Top SQL]ページには、負荷に最も寄与している上位 5 種類の SQL クエリのみが表示されます。これは、
tidb_top_sql_max_time_series_count
の構成とは無関係です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
100
- 範囲:
[1, 5000]
- この変数は、負荷に最も寄与する SQL ステートメント (つまり、上位 N) を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バージョン6.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バージョン6.5.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- デフォルト値:
4
- 範囲:
[1, 256]
- この変数は、各TiDBノードにおけるTTLジョブの最大同時実行数を設定するために使用されます。詳細については、 生きる時間を参照してください。
tidb_ttl_job_enableバージョン6.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バージョン6.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バージョン7.0.0の新機能
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- 範囲: グローバル
- クラスターに存続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
-1
- 範囲:
-1
~[1, 256]
- クラスタ全体で実行中のTTLタスクの最大数を指定します。1
-1
、TTLタスクの数がTiKVノードの数と等しいことを意味します。詳細については、 生きる時間を参照してください。
tidb_txn_assertion_levelバージョン6.0.0の新機能
スコープ: セッション | グローバル
クラスターに持続: はい
ヒントSET_VARに該当: いいえ
タイプ: 列挙
デフォルト値:
FAST
FAST
STRICT
値:OFF
この変数はアサーションレベルを制御するために使用されます。アサーションとは、データとインデックス間の整合性チェックであり、トランザクションのコミットプロセスにおいて、書き込まれるキーが存在するかどうかを確認します。詳細については、 データとインデックス間の不整合のトラブルシューティング参照してください。
OFF
: このチェックを無効にします。FAST
: ほとんどのチェック項目を有効にしますが、パフォーマンスにはほとんど影響しません。STRICT
: すべてのチェック項目を有効にします。システムのワークロードが高い場合、悲観的トランザクションのパフォーマンスにわずかな影響があります。
バージョン6.0.0以降の新しいクラスターの場合、デフォルト値は
FAST
です。バージョン6.0.0より前のバージョンからアップグレードした既存のクラスターの場合、デフォルト値はOFF
です。
tidb_txn_commit_batch_size v6.2.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
16384
- 範囲:
[1, 1073741824]
- 単位: バイト
- この変数は、TiDBがTiKVに送信するトランザクションコミット要求のバッチサイズを制御するために使用されます。アプリケーションワークロード内のほとんどのトランザクションに大量の書き込み操作が含まれる場合、この変数の値を大きくすることでバッチ処理のパフォーマンスを向上させることができます。ただし、この変数の値が大きすぎて、TiKVの単一ログの最大サイズ(デフォルトでは8MiB)を超えると、コミットが失敗する可能性があります。
tidb_txn_entry_size_limitバージョン7.6.0の新機能
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
0
- 範囲:
[0, 125829120]
- 単位: バイト
- この変数は、TiDB設定項目
performance.txn-entry-size-limit
動的に変更するために使用されます。これは、TiDB内の単一行のデータサイズ(設定項目1に相当)を制限します。この変数のデフォルト値は0
で、TiDBはデフォルトで設定項目txn-entry-size-limit
の値を使用します。この変数が0以外の値に設定された場合、txn-entry-size-limit
も同じ値に設定されます。
注記:
この変数をSESSIONスコープで変更すると、現在のユーザーセッションにのみ影響し、内部TiDBセッションには影響しません。内部TiDBトランザクションのエントリサイズが設定項目の制限を超えた場合、トランザクションが失敗する可能性があります。したがって、制限を動的に増加させるには、GLOBALスコープで変数を変更することをお勧めします。
tidb_txn_mode
注記:
この変数はTiDB Cloudサーバーレス場合読み取り専用です。
- スコープ: セッション | グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
pessimistic
- 可能
optimistic
値:pessimistic
- この変数はトランザクションモードを設定するために使用されます。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にプッシュダウンされて実行される際、この変数を使用してウィンドウ関数実行の同時実行レベルを制御できます。指定可能な値は次のとおりです。
- -1: 細粒度シャッフル機能が無効になります。TiFlashにプッシュダウンされたウィンドウ関数は単一スレッドで実行されます。
- 0: 細粒度シャッフル機能が有効です。1
tidb_max_tiflash_threads
有効な値(0より大きい値)に設定されている場合、tiflash_fine_grained_shuffle_stream_count
tidb_max_tiflash_threads
に設定されます。それ以外の場合は、 TiFlashコンピューティングノードのCPUリソースに基づいて自動的に推定されます。TiFlashTiFlashウィンドウ関数の実際の同時実行レベルは、min(tiflash_fine_grained_shuffle_stream_count
、 TiFlashノード上の物理スレッド数)です。 - 0より大きい整数:Fine Grained Shuffle機能が有効になります。TiFlashにプッシュダウンされたウィンドウ関数は複数のスレッドで実行されます。同時実行レベルはmin(
tiflash_fine_grained_shuffle_stream_count
、 TiFlashノード上の物理スレッド数)です。
理論上、ウィンドウ関数のパフォーマンスはこの値に比例して向上します。ただし、この値が実際の物理スレッド数を超えると、パフォーマンスの低下につながります。
tiflash_mem_quota_query_per_nodeバージョン7.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 クエリレベルのスピルのしきい値を制御します。3
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
- 値
closest_adaptive
オプション:all_replicas
、またはclosest_replicas
- この変数は、クエリに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]
- 単位: ミリ秒
- TiDBがクエリ内でTiKV RPC読み取り要求を送信する際のタイムアウトを
tikv_client_read_timeout
設定できます。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-COMMITTED
SERIALIZABLE
値REPEATABLE-READ
READ-UNCOMMITTED
- この変数はトランザクション分離レベルを設定します。TiDBはMySQLとの互換性のために
REPEATABLE-READ
宣言していますが、実際の分離レベルはスナップショット分離レベルです。詳細はトランザクション分離レベル参照してください。
トランザクション分離
この変数はtransaction_isolation
のエイリアスです。
tx_isolation_one_shot
注記:
この変数はTiDB内部で使用されます。ユーザーが使用することは想定されていません。
内部的には、TiDB パーサーはSET TRANSACTION ISOLATION LEVEL [READ COMMITTED| REPEATABLE READ | ...]
文をSET @@SESSION.TX_ISOLATION_ONE_SHOT = [READ COMMITTED| REPEATABLE READ | ...]
に変換します。
tx_read_ts
- スコープ: セッション
- ヒント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.policy
2
(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セルフマネージドTiDB Cloudサーバーレス場合は
[0, 2147483647]
[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セルフマネージドTiDB Cloudサーバーレス場合は
[0, 2147483647]
[1, 2147483647]
場合はTiDB Cloud専用 - この変数は、パスワードの複雑さチェックにおけるチェック項目です。パスワードに十分な大文字と小文字が含まれているかどうかをチェックします。この変数は、
validate_password.enable
有効で、validate_password.policy
1
(中)以上に設定されている場合にのみ有効になります。 - パスワード内の大文字と小文字の数は、どちらも
validate_password.mixed_case_count
未満にすることはできません。例えば、変数が1
に設定されている場合、パスワードには少なくとも1つの大文字と1つの小文字が含まれている必要があります。
validate_password.number_count v6.5.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- 型: 整数
- デフォルト値:
1
- 範囲: TiDBセルフマネージドTiDB Cloudサーバーレス場合は
[0, 2147483647]
[1, 2147483647]
場合はTiDB Cloud専用 - この変数は、パスワードの複雑さチェックにおけるチェック項目です。パスワードに十分な数の数字が含まれているかどうかをチェックします。この変数は、
validate_password.enable
が有効で、validate_password.policy
1
(中)以上に設定されている場合にのみ有効になります。
validate_password.policy v6.5.0 の新機能
- 範囲: グローバル
- クラスターに持続: はい
- ヒントSET_VARに該当: いいえ
- タイプ: 列挙
- デフォルト値:
1
- 値のオプション: TiDB Self-Managed の場合は
0
、1
、 5 、2
TiDB Cloudサーバーレス場合はTiDB Cloud専用 、1
、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セルフマネージドTiDB Cloudサーバーレス場合は
[0, 2147483647]
[1, 2147483647]
場合はTiDB Cloud専用 - この変数は、パスワードの複雑さチェックにおけるチェック項目です。パスワードに十分な特殊文字が含まれているかどうかをチェックします。この変数は、
validate_password.enable
が有効で、validate_password.policy
1
(中)以上に設定されている場合にのみ有効になります。
バージョン
- 範囲: なし
- ヒントSET_VARに該当: いいえ
- デフォルト値:
8.0.11-TiDB-
(tidb バージョン) - この変数はMySQLのバージョンとTiDBのバージョンを返します。例:'8.0.11-TiDB-v8.1.2'
バージョンコメント
- 範囲: なし
- ヒント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
- この読み取り専用変数は、以前実行されたステートメントで発生した警告の数を示します。