機能の説明
この機能はセカンダリインデックス作成プロセスの消費時間を最適化するものです。この機能をオンにすると、マルチスレッド並列処理を使用して、セカンダリインデックスデータに対し外部ソーティングを行うと同時に、flush bulk loading段階のflush listに対するロック操作を最適化し、CREATE INDEXの消費時間とDMLの並列処理への影響を効果的に低下させます。
サポートするバージョン
カーネルバージョン MySQL 8.0 20210330およびそれ以降
カーネルバージョン MySQL 5.7 20210331およびそれ以降
ユースケース
データベースは頻繁にDDL操作を行うため、DDLに関連するトラブルも頻繁に起こります。例えば次のようなものです。
インデックスを追加するとインスタンスにジッターが発生し、正常な業務の読み取り/書き込みに影響が出るのはなぜですか。
1GBに満たないテーブルのDDL実行に10分以上かかることがあるのはなぜですか。
一時テーブルを使用した接続の終了時に、インスタンスにジッターが発生するのはなぜですか。
上記のようなよくあるご質問に対応するため、TXSQLカーネルチームは様々なケースを綿密に分析およびテストし、flush bulk loading段階のflush listに対するロック操作を最適化し、CREATE INDEXの消費時間とDMLの並列処理への影響を効果的に低下させることで、DDL操作による影響を低減させました。
パフォーマンスデータ
sysbenchテストでは20億行のデータをインポートしました。データ量は約453GBで、FAST DDL機能をオンにしました。
mysql> set global innodb_fast_ddl=ON;
Query OK, 0 rows affected (0.00 sec)
オンにする前の消費時間は4395秒、オンにした後の消費時間は2455秒でした。
利用説明
パラメータinnodb_fast_ddlによってこの機能をオンまたはオフにします。
パラメータinnodb_parallel_merge_threadsによって、並列外部ソーティングプロセスで使用する並列スレッド数を制御します。デフォルトは8、最大で32です。
|
| | | | | |
innodb_parallel_merge_threads | | | | | |
説明:
ユーザーは現在、上記のパラメータのパラメータ値を直接変更することはできません。変更が必要な場合は、ワークシートを提出して変更できます。