TiDB 高速テーブル作成

TiDB v7.6.0 では、テーブル作成の高速化をサポートするシステム変数tidb_ddl_versionが導入され、バルク テーブル作成の効率が向上しました。v8.0.0 以降では、このシステム変数の名前がtidb_enable_fast_create_tableに変更されています。

TiDB は、オンライン非同期スキーマ変更アルゴリズムを使用してメタデータを変更します。すべての DDL ジョブはmysql.tidb_ddl_jobテーブルに送信され、所有者ノードが DDL ジョブをプルして実行します。オンライン DDL アルゴリズムの各フェーズを実行した後、DDL ジョブは完了としてマークされ、 mysql.tidb_ddl_historyテーブルに移動されます。したがって、DDL ステートメントは所有者ノードでのみ実行でき、線形に拡張することはできません。

ただし、一部の DDL ステートメントでは、オンライン DDL アルゴリズムに厳密に従う必要はありません。たとえば、 CREATE TABLEステートメントでは、ジョブの状態はnonepublic 2 つだけです。そのため、TiDB は DDL の実行プロセスを簡素化し、テーブル作成を高速化するために、所有者以外のノードでCREATE TABLEステートメントを実行します。

TiDBツールとの互換性

  • ティCDC tidb_enable_fast_create_tableによって作成されたテーブルの複製をサポートしていません。

制限

パフォーマンス最適化は、 CREATE TABLEステートメントでのみテーブル作成に使用できるようになり、このステートメントには外部キー制約を含めることはできません。

テーブル作成を高速化するには、 tidb_enable_fast_create_tableを使用します。

システム変数tidb_enable_fast_create_tableの値を指定することにより、テーブル作成のパフォーマンス最適化を有効または無効にすることができます。

テーブル作成のパフォーマンス最適化を有効にするには、この変数の値をONに設定します。

SET GLOBAL tidb_enable_fast_create_table = ON;

テーブル作成のパフォーマンス最適化を無効にするには、この変数の値をOFFに設定します。

SET GLOBAL tidb_enable_fast_create_table = OFF;

実施原則

テーブル作成のパフォーマンス最適化の詳細な実装原則は次のとおりです。

  1. CREATE TABLEジョブを作成します。

    CREATE TABLEステートメントを解析することによって、対応する DDL ジョブが生成されます。

  2. CREATE TABLEジョブを実行します。

    CREATE TABLEステートメントを受信した TiDB ノードはそれを直接実行し、テーブル構造を TiKV に永続化します。同時に、 CREATE TABLEジョブは完了としてマークされ、 mysql.tidb_ddl_historyテーブルに挿入されます。

  3. テーブル情報を同期します。

    TiDB は、新しく作成されたテーブル構造を同期するように他のノードに通知します。

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