システム変数

GLOBAL INSTANCE SESSION INSTANCE SESSION GLOBAL適用される場合があるという点でいくつかの違いがあります。

  • GLOBALスコープ変数への変更は、TiDBとの新しい接続セッションにのみ適用されます。現在アクティブな接続セッションは影響を受けません。これらの変更は永続化され、再起動後も有効です。
  • INSTANCEスコープ変数への変更は、変更が行われた直後に、現在のTiDBインスタンスとのすべてのアクティブまたは新しい接続セッションに適用されます。他のTiDBインスタンスは影響を受けません。これらの変更は永続化されず、TiDBの再起動後に無効になります。
  • 変数はNONEのスコープを持つこともできます。これらの変数は読み取り専用であり、通常、TiDBサーバーの起動後に変更されない静的情報を伝達するために使用されます。

変数は、セッションごと、インスタンス、またはグローバルベースで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;

ノート:

SET GLOBALを実行すると、ステートメントが発行されたTiDBサーバーにすぐに適用されます。次に、通知がすべてのTiDBサーバーに送信され、システム変数キャッシュが更新されます。これは、バックグラウンド操作としてすぐに開始されます。一部のTiDBサーバーが通知を見逃す可能性があるため、システム変数キャッシュも30秒ごとに自動的に更新されます。これにより、すべてのサーバーが同じ構成で動作していることを確認できます。

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

ノート:

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

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

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

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

変数リファレンス

allow_auto_random_explicit_insertv4.0.3の新機能

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

auto_increment_increment

  • スコープ:セッション|グローバル
  • デフォルト値: 1
  • 範囲: [1, 65535]
  • 列に割り当てられるAUTO_INCREMENTの値のステップサイズを制御します。多くの場合、 auto_increment_offsetと組み合わせて使用されます。

auto_increment_offset

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

自動コミット

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

block_encryption_mode

  • スコープ:セッション|グローバル
  • デフォルト値: aes-128-ecb
  • AES_ENCRYPT()およびAES_DECRYPT()関数の暗号化モードを定義します。

character_set_client

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

character_set_connection

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

character_set_database

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

character_set_results

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

character_set_server

  • スコープ:セッション|グローバル
  • デフォルト値: utf8mb4
  • サーバーのデフォルトの文字セット。

collation_connection

  • スコープ:セッション|グローバル
  • デフォルト値: utf8mb4_bin
  • この変数は、指定された照合順序を持たない文字列リテラルの照合順序を示します。

collation_database

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

collation_server

  • スコープ:セッション|グローバル
  • デフォルト値: utf8mb4_bin
  • サーバーのデフォルトの照合順序。

cte_max_recursion_depth

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

datadir

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

ddl_slow_threshold

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: 300
  • 単位:ミリ秒
  • 実行時間がしきい値を超えるDDL操作をログに記録します。

default_authentication_plugin

  • スコープ:グローバル
  • デフォルト値: mysql_native_password
  • 可能なcaching_sha2_passwordmysql_native_password
  • この変数は、サーバーとクライアントの接続が確立されているときにサーバーがアドバタイズする認証方法を設定します。この変数の可能な値は認証プラグインのステータスに記載されています。
  • 値のオプション: mysql_native_passwordおよびcaching_sha2_password 。詳細については、 認証プラグインのステータスを参照してください。

default_week_format

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

external_key_checks

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

group_concat_max_len

  • スコープ:セッション|グローバル
  • デフォルト値: 1024
  • 範囲: [4, 18446744073709551615]
  • GROUP_CONCAT()関数のアイテムの最大バッファーサイズ。

have_openssl

  • スコープ:なし
  • デフォルト値: DISABLED
  • MySQL互換性のための読み取り専用変数。サーバーでTLSが有効になっている場合、サーバーによってYESに設定されます。

have_ssl

  • スコープ:なし
  • デフォルト値: DISABLED
  • MySQL互換性のための読み取り専用変数。サーバーでTLSが有効になっている場合、サーバーによってYESに設定されます。

ホスト名

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

身元

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

init_connect

  • スコープ:グローバル
  • デフォルト値: ""
  • init_connect機能を使用すると、TiDBサーバーに最初に接続したときにSQLステートメントを自動的に実行できます。 CONNECTION_ADMINつまたはSUPERの特権がある場合、このinit_connectのステートメントは実行されません。 init_connectステートメントでエラーが発生した場合、ユーザー接続は終了します。

innodb_lock_wait_timeout

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

Interactive_timeout

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

last_insert_id

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

last_plan_from_bindingv4.0の新機能

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

last_plan_from_cachev4.0の新機能

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

ライセンス

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

log_bin

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

max_allowed_packet

  • スコープ:セッション|グローバル
  • デフォルト値: 67108864
  • 範囲: [1024, 1073741824]
  • 単位:バイト
  • MySQLプロトコルのパケットの最大サイズ。

max_execution_time

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

ノート:

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

placement_checksv5.3.0の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:セッション|グローバル
  • デフォルト値: ON
  • この変数は、DDLステートメントがSQLの配置ルールを検証するかどうかを制御します。
  • この変数は、DDLステートメントがSQLの配置ルールを検証するかどうかを制御します。
  • これは、配置ルールに違反した場合でもテーブルを常に作成できるようにするために、論理ダンプ/復元ツールで使用することを目的としています。これは、mysqldumpがすべてのダンプファイルの先頭にSET FOREIGN_KEY_CHECKS=0;を書き込む方法と似ています。

plugin_dir

  • スコープ:インスタンス
  • デフォルト値: ""
  • コマンドラインフラグで指定されたプラグインをロードするディレクトリを示します。

plugin_load

  • スコープ:インスタンス
  • デフォルト値: ""
  • TiDBの起動時にロードするプラグインを示します。これらのプラグインは、コマンドラインフラグで指定され、コンマで区切られます。

ポート

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

rand_seed1

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

rand_seed2

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

skip_name_resolvev5.2.0の新機能

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

ノート:

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

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

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

ソケット

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

sql_log_bin

  • スコープ:セッション|グローバル
  • デフォルト値: ON
  • 変更をTiDB Binlogに書き込むかどうかを示します。

ノート:

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

sql_mode

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

sql_select_limitv4.0.2の新機能

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

ssl_ca

  • スコープ:なし
  • デフォルト値: ""
  • 認証局ファイルの場所(存在する場合)。

ssl_cert

  • スコープ:なし
  • デフォルト値: ""
  • SSL / TLS接続に使用される証明書ファイル(ファイルがある場合)の場所。

ssl_key

  • スコープ:なし
  • デフォルト値: ""
  • SSL / TLS接続に使用される秘密鍵ファイル(存在する場合)の場所。

system_time_zone

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

tidb_allow_batch_copv4.0の新機能

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

  • デフォルト値: 1

  • 範囲: [0, 2]

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

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

tidb_allow_fallback_to_tikvv5.0の新機能

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

tidb_allow_function_for_expression_indexv5.2.0の新機能

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

tidb_allow_mppv5.0の新機能

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

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

MPPモードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。

MPPモードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。

tidb_allow_remove_auto_incv2.1.18およびv3.0.4の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_analyze_versionv5.1.0の新機能

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

tidb_auto_analyze_end_time

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

tidb_auto_analyze_ratio

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

ノート:

TiDBの開始構成ファイルでrun-auto-analyzeオプションが有効になっている場合にのみ、 auto_analyze機能をトリガーできます。

tidb_auto_analyze_start_time

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

tidb_backoff_lock_fast

  • スコープ:セッション|グローバル
  • デフォルト値: 10
  • 範囲: [1, 2147483647]
  • この変数は、読み取り要求がロックに遭遇したときのbackoff回を設定するために使用されます。

tidb_backoff_weight

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

  • デフォルト値: 2

  • 範囲: [1, 2147483647]

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

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

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

tidb_batch_insert

  • スコープ:セッション
  • デフォルト値: OFF
  • この変数により、 tidb_dml_batch_sizeINSERTのステートメントで使用できます。
  • OFFのみがACID準拠を提供します。これを他の値に設定すると、個々のINSERTステートメントがより小さなトランザクションに分割されるため、TiDBの原子性と分離の保証が破られます。

tidb_broadcast_join_threshold_countv5.0の新機能

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

tidb_broadcast_join_threshold_sizev5.0の新機能

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

tidb_build_stats_concurrency

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

tidb_capture_plan_baselinesv4.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: OFF
  • この変数は、 ベースラインキャプチャ機能を有効にするかどうかを制御するために使用されます。この機能はステートメントの要約に依存するため、ベースラインキャプチャを使用する前に、ステートメントの要約を有効にする必要があります。
  • この機能を有効にすると、ステートメントの要約内の履歴SQLステートメントが定期的にトラバースされ、少なくとも2回出現するSQLステートメントのバインディングが自動的に作成されます。

tidb_check_mb4_value_in_utf8

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_checksum_table_concurrency

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

tidb_config

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_constraint_check_in_place

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

  • デフォルト値: OFF

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

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

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

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

制約チェックは、悲観的なトランザクションに対して常に実行されます(デフォルト)。

tidb_current_ts

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

tidb_ddl_error_count_limit

  • スコープ:グローバル
  • デフォルト値: 512
  • 範囲: [0, 9223372036854775807]
  • この変数は、DDL操作が失敗したときの再試行回数を設定するために使用されます。再試行回数がパラメータ値を超えると、誤ったDDL操作がキャンセルされます。

tidb_ddl_reorg_batch_size

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

tidb_ddl_reorg_priority

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

tidb_ddl_reorg_worker_cnt

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

tidb_disable_txn_auto_retry

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

  • デフォルト値: ON

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

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

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

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

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

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

tidb_distsql_scan_concurrency

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

tidb_dml_batch_size

  • スコープ:セッション|グローバル
  • デフォルト値: 0
  • 範囲: [0, 2147483647]
  • 単位:行
  • この値が0より大きい場合、TiDBはINSERTLOAD DATAなどのステートメントをより小さなトランザクションにバッチコミットします。これにより、メモリ使用量が削減され、一括変更によってtxn-total-size-limitに到達しないようにすることができます。
  • INSERTtidb_dml_batch_sizeのステートメントを使用するには、システム変数tidb_batch_insertONに設定する必要もあります。
  • 0のみがACID準拠を提供します。これを他の値に設定すると、TiDBの原子性と分離の保証が破られます。

tidb_enable_1pcv5.0の新機能

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

ノート:

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

tidb_enable_alter_placement

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:グローバル
  • デフォルト値: OFF

tidb_enable_amend_pessimistic_txnv4.0.7の新機能

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

  • デフォルト値: OFF

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

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

ノート:

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

tidb_enable_async_commitv5.0の新機能

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

ノート:

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

tidb_enable_auto_increment_in_generated

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

tidb_enable_change_multi_schema

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

tidb_enable_cascades_planner

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

tidb_enable_chunk_rpcv4.0の新機能

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

tidb_enable_clustered_indexv5.0の新機能

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

tidb_enable_collect_execution_info

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: ON
  • この変数は、各オペレーターの実行情報を低速クエリログに記録するかどうかを制御します。

tidb_enable_column_trackingv5.4.0の新機能

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

tidb_enable_enhanced_security

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

tidb_enable_fast_analyze

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

tidb_enable_index_mergev4.0の新機能

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

ノート:

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

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

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

tidb_enable_list_partitionv5.0の新機能

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

tidb_enable_noop_functionsv4.0の新機能

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

tidb_enable_pagingv5.4.0の新機能

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

tidb_enable_parallel_applyv5.0の新機能

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

tidb_enable_pseudo_for_outdated_statsv5.3.0の新機能

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

tidb_enable_rate_limit_action

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

tidb_enable_slow_log

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: ON
  • この変数は、スローログ機能を有効にするかどうかを制御するために使用されます。

tidb_enable_stmt_summaryv3.0.4の新機能

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

tidb_enable_strict_double_type_checkv5.0の新機能

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

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

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

ノート:

MySQLではFLOATのタイプの精度が許可されているため、この設定はタイプDOUBLEにのみ適用されます。この動作はMySQL8.0.17以降で非推奨になり、 FLOATまたはDOUBLEタイプの精度を指定することはお勧めしません。

tidb_enable_table_partition

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

tidb_enable_telemetryv4.0.2の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_enable_tso_follower_proxyv5.3.0の新機能

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

ノート:

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

tidb_enable_vectorized_expressionv4.0の新機能

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

tidb_enable_window_function

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

tidb_enforce_mppv5.1の新機能

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

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

MPPモードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。

MPPモードの選択の詳細については、 MPPモードを選択するかどうかを制御しますを参照してください。

tidb_evolve_plan_baselinesv4.0の新機能

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

tidb_evolve_plan_task_end_timev4.0の新機能

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

tidb_evolve_plan_task_max_timev4.0の新機能

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

tidb_evolve_plan_task_start_timev4.0の新機能

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

tidb_executor_concurrencyv5.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: 5
  • 範囲: [1, 256]
  • 単位:スレッド

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

  • index lookup
  • index lookup join
  • hash join
  • hash aggregationpartialフェーズとfinalフェーズ)
  • window
  • projection

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

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

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

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

tidb_expensive_query_time_threshold

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_force_priority

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: NO_PRIORITY
  • この変数は、TiDBサーバーで実行されるステートメントのデフォルトの優先度を変更するために使用されます。ユースケースは、OLAPクエリを実行している特定のユーザーがOLTPクエリを実行しているユーザーよりも低い優先度を確実に受け取るようにすることです。
  • この変数のLOW_PRIORITYは、 NO_PRIORITY 、またはHIGH_PRIORITYに設定できDELAYED

tidb_gc_concurrencyv5.0の新機能

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

tidb_gc_enablev5.0の新機能

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

tidb_gc_life_timev5.0の新機能

  • スコープ:グローバル
  • デフォルト値: 10m0s
  • 範囲: [10m0s, 8760h0m0s]
  • GoDurationの形式で各GCのデータが保持される時間制限。 GCが発生した場合、現在の時刻からこの値を引いた値が安全なポイントです。

ノート:

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

tidb_gc_run_intervalv5.0の新機能

  • スコープ:グローバル
  • デフォルト値: 10m0s
  • 範囲: [10m0s, 8760h0m0s]
  • GC間隔をGoDurationの形式で指定し"15m" "1h30m"

tidb_gc_scan_lock_modev5.0の新機能

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

tidb_general_log

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: OFF
  • この変数は、すべてのSQLステートメントをログに記録するかどうかを設定するために使用されます。この機能はデフォルトで無効になっています。保守担当者が問題を特定するときにすべてのSQLステートメントをトレースする必要がある場合は、この機能を有効にすることができます。
  • この変数は、すべてのSQLステートメントをログに記録するかどうかを設定するために使用されます。この機能はデフォルトで無効になっています。保守担当者が問題を特定するときにすべてのSQLステートメントをトレースする必要がある場合は、この機能を有効にすることができます。

  • この機能のすべてのレコードをログに表示するには、 "GENERAL_LOG"の文字列をクエリします。次の情報が記録されます。

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

tidb_hash_join_concurrency

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

tidb_hashagg_final_concurrency

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

tidb_hashagg_partial_concurrency

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

tidb_index_join_batch_size

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

tidb_index_lookup_concurrency

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

tidb_index_lookup_join_concurrency

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

tidb_index_lookup_size

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

tidb_index_serial_scan_concurrency

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

tidb_init_chunk_size

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

tidb_isolation_read_enginesv4.0の新機能

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

tidb_log_file_max_daysv5.3.0の新機能

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

tidb_low_resolution_tso

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

tidb_max_chunk_size

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

tidb_max_delta_schema_countv2.1.18およびv3.0.5の新機能

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

tidb_mem_quota_apply_cachev5.0の新機能

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

tidb_mem_quota_query

  • スコープ:セッション
  • デフォルト値: 1073741824 (1 GiB)
  • 範囲: [-1, 9223372036854775807]
  • 単位:バイト
  • この変数は、クエリのメモリクォータのしきい値を設定するために使用されます。
  • 実行中のクエリのメモリクォータがしきい値を超えると、TiDBは構成ファイルのOOMActionオプションで指定された操作を実行します。

tidb_memory_usage_alarm_ratio

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: 0.8
  • TiDBは、必要なメモリの割合が特定のしきい値を超えると、アラームをトリガーします。この機能の詳細な使用法の説明については、 memory-usage-alarm-ratioを参照してください。
  • memory-usage-alarm-ratioを設定することにより、この変数の初期値を設定できます。
  • TiDBは、必要なメモリの割合が特定のしきい値を超えると、アラームをトリガーします。この機能の詳細な使用法の説明については、 memory-usage-alarm-ratioを参照してください。
  • memory-usage-alarm-ratioを設定することにより、この変数の初期値を設定できます。

tidb_metric_query_range_durationv4.0の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_metric_query_stepv4.0の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_multi_statement_modev4.0.11の新機能

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

ノート:

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

tidb_opt_agg_push_down

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

tidb_opt_correlation_exp_factor

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

tidb_opt_correlation_threshold

  • スコープ:セッション|グローバル
  • デフォルト値: 0.9
  • この変数は、列順序相関を使用して行数の推定を有効にするかどうかを決定するしきい値を設定するために使用されます。現在の列とhandle列の間の次数相関がしきい値を超えると、このメソッドが有効になります。

tidb_opt_distinct_agg_push_down

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

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

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

tidb_opt_enable_correlation_adjustment

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

tidb_opt_insubq_to_join_and_agg

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

  • デフォルト値: ON

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

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

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

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

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

    aa列でt1uniquenot nullに制限されている場合。集計せずに、次のステートメントを使用できます。

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

tidb_opt_limit_push_down_threshold

  • スコープ:セッション|グローバル
  • デフォルト値: 100
  • 範囲: [0, 2147483647]
  • この変数は、LimitまたはTopN演算子をTiKVにプッシュするかどうかを決定するしきい値を設定するために使用されます。
  • LimitまたはTopN演算子の値がこのしきい値以下の場合、これらの演算子は強制的にTiKVにプッシュダウンされます。この変数は、推定が間違っていることもあり、LimitまたはTopN演算子をTiKVにプッシュダウンできないという問題を解決します。

tidb_opt_prefer_range_scanv5.0の新機能

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

tidb_opt_write_row_id

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_partition_prune_modev5.1の新機能

現在、パーティションテーブルの動的プルーニングモードは実験的機能です。実稼働環境で使用することはお勧めしません。

tidb_persist_analyze_optionsv5.4.0の新機能

  • スコープ:グローバル
  • デフォルト値: ON
  • この変数は、 ANALYZE構成の永続性つの機能を有効にするかどうかを制御します。

tidb_pprof_sql_cpuv4.0の新機能

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_projection_concurrency

  • スコープ:セッション|グローバル
  • デフォルト値: -1
  • 範囲: [-1, 256]
  • 単位:スレッド
  • この変数は、 Projection演算子の同時実行性を設定するために使用されます。
  • -1は、代わりに値tidb_executor_concurrencyが使用されることを意味します。

tidb_query_log_max_len

  • スコープ:インスタンス
  • デフォルト値: 4096 (4 KiB)
  • 範囲: [-1, 9223372036854775807]
  • 単位:バイト
  • SQLステートメント出力の最大長。ステートメントの出力長がtidb_query-log-max-lenの値より大きい場合、ステートメントは切り捨てられて出力されます。

使用例:

SET tidb_query_log_max_len = 20

tidb_read_stalenessの新機能

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

tidb_record_plan_in_slow_log

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: ON
  • この変数は、低速クエリの実行プランを低速ログに含めるかどうかを制御するために使用されます。

tidb_redact_log

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_regard_null_as_pointv5.4.0の新機能

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

tidb_replica_readv4.0の新機能

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

tidb_restricted_read_onlyv5.2.0の新機能

  • スコープ:グローバル
  • デフォルト値: OFF
  • この変数は、クラスタ全体の読み取り専用ステータスを制御します。変数がONの場合、クラスタ全体のすべてのTiDBサーバーは読み取り専用モードになります。この場合、 USEは、 SELECTなどのデータを変更しないステートメントのみを実行しSHOWINSERTUPDATEなどの他のステートメントの場合、TiDBはこれらのステートメントを読み取り専用モードで実行することを拒否します。
  • この変数を使用して読み取り専用モードを有効にすると、クラスタ全体が最終的に読み取り専用ステータスになります。 TiDBクラスタでこの変数の値を変更したが、その変更が他のTiDBサーバーにまだ伝播されていない場合、更新されていないTiDBサーバーはまだ読み取り専用モードではありません。
  • この変数を有効にすると、実行中のSQLステートメントは影響を受けません。 TiDBは、実行されるSQLステートメントの読み取り専用チェックのみを実行します。
  • この変数を有効にすると、TiDBはコミットされていないトランザクションを次の方法で処理します。
    • コミットされていない読み取り専用トランザクションの場合、トランザクションを通常どおりコミットできます。
    • 読み取り専用ではないコミットされていないトランザクションの場合、これらのトランザクションで書き込み操作を実行するSQLステートメントは拒否されます。
    • データが変更されたコミットされていない読み取り専用トランザクションの場合、これらのトランザクションのコミットは拒否されます。
  • 読み取り専用モードを有効にすると、すべてのユーザー( SUPER特権を持つユーザーを含む)は、ユーザーにRESTRICTED_REPLICA_WRITER_ADMIN特権が明示的に付与されていない限り、データを書き込む可能性のあるSQLステートメントを実行できなくなります。
  • RESTRICTED_VARIABLES_ADMINつまたはSUPERの特権を持つユーザーは、この変数を変更できます。ただし、 セキュリティ強化モードが有効になっている場合、この変数を変更できるのはRESTRICTED_VARIABLES_ADMIN特権を持つユーザーのみです。

tidb_retry_limit

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

tidb_row_format_version

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

tidb_scatter_region

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

tidb_skip_ascii_checkv5.0の新機能

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

tidb_skip_isolation_level_check

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

tidb_skip_utf8_check

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

ノート:

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

tidb_slow_log_threshold

ノート:

このTiDB変数はTiDB Cloudには適用されません。

  • スコープ:インスタンス
  • デフォルト値: 300
  • 範囲: [-1, 9223372036854775807]
  • 単位:ミリ秒
  • この変数は、低速ログによって消費された時間のしきい値を出力するために使用されます。クエリに費やされた時間がこの値よりも大きい場合、このクエリは低速ログと見なされ、そのログが低速クエリログに出力されます。

使用例:

SET tidb_slow_log_threshold = 200;

tidb_slow_query_file

ノート:

このTiDB変数はTiDB Cloudには適用されません。

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

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

tidb_snapshot

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

tidb_stats_load_sync_waitv5.4.0の新機能

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

tidb_stats_load_pseudo_timeoutの新機能

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

tidb_stmt_summary_history_sizev4.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: 24
  • 範囲: [0, 255]
  • この変数は、履歴容量をステートメント要約表に設定するために使用されます。

tidb_stmt_summary_internal_queryv4.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: OFF
  • この変数は、TiDBのSQL情報をステートメント要約表に含めるかどうかを制御するために使用されます。

tidb_stmt_summary_max_sql_lengthv4.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: 4096
  • 範囲: [0, 2147483647]
  • この変数は、 ステートメント要約表のSQL文字列の長さを制御するために使用されます。

tidb_stmt_summary_max_stmt_countv4.0の新機能

  • スコープ:セッション|グローバル
  • デフォルト値: 3000
  • 範囲: [1, 32767]
  • この変数は、 ステートメント要約表がメモリに格納するステートメントの最大数を設定するために使用されます。

tidb_stmt_summary_refresh_intervalv4.0の新機能

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

tidb_enable_top_sqlの新機能

  • スコープ:グローバル
  • デフォルト値: OFF
  • この変数は、 Top SQL機能を有効にするかどうかを制御するために使用されます。
  • この変数は、 Top SQL機能を有効にするかどうかを制御するために使用されます。

tidb_store_limitv3.0.4およびv4.0の新機能

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

tidb_tmp_table_max_sizev5.3.0の新機能

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

tidb_tso_client_batch_max_wait_timev5.3.0の新機能

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

ノート:

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

tidb_txn_mode

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

tidb_use_plan_baselinesv4.0の新機能

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

tidb_wait_split_region_finish

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

tidb_wait_split_region_timeout

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

tidb_window_concurrencyv4.0の新機能

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

time_zone

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

タイムスタンプ

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

transaction_isolation

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

tx_isolation

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

バージョン

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

version_comment

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

version_compile_machine

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

version_compile_os

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

wait_timeout

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

warning_count

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

windowing_use_high_precision

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

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

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2023 PingCAP. All Rights Reserved.
Privacy Policy.