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