制御実行計画
SQL チューニングの最初の 2 つの章では、TiDB の実行プランを理解する方法と、TiDB が実行プランを生成する方法について説明します。この章では、実行プランの問題を特定したときに、実行プランの生成を制御するために使用できる方法について説明します。この章には、主に次の 3 つの側面が含まれます。
- オプティマイザーのヒントでは、ヒントを使用して TiDB に実行プランを生成する方法を学習します。
- しかし、ヒントは SQL 文を邪魔的に変更します。シナリオによっては、ヒントを単純に挿入できない場合があります。 SQL プラン管理では、TiDB が別の構文を使用して実行プランの生成を邪魔的に制御する方法と、バックグラウンドで実行プランを自動的に進化させる方法について説明します。この方法は、バージョン アップグレードによって発生する実行プランの不安定性やクラスターのパフォーマンス低下などの問題に対処するのに役立ちます。
- 最後に、 最適化ルールのブロックリストと式のプッシュダウンでブロックリストの使用方法を学習します。
前述の方法以外にも、実行計画はいくつかのシステム変数の影響を受けます。これらの変数をシステムレベルまたはセッションレベルで変更することで、実行計画の生成を制御できます。v6.5.3 および v7.1.0 以降、TiDB は比較的特殊な変数tidb_opt_fix_control
導入しています。この変数は複数の制御項目を受け入れて、よりきめ細かくオプティマイザの動作を制御し、クラスターのアップグレード後にオプティマイザの動作が変更されることによるパフォーマンスの低下を防ぐことができます。より詳細な紹介についてはオプティマイザー修正コントロールを参照してください。