このトピックでは、インスタンスのチューニングのためにApsaraDB RDS for MySQLインスタンスのloose_optimizer_switchパラメーターを変更する方法について説明します。
背景情報
クエリオプティマイザはMySQLの組み込み機能モジュールであり、クエリステートメントを最適化するために使用されます。 クエリの効率を向上させるために、クエリの前に最適な実行プランを生成および選択できます。 loose_optimizer_switchパラメーターは、ApsaraDB RDS for MySQLのシステム変数であり、クエリオプティマイザーの動作が有効になっているかどうかを確認するために使用されます。
Alibaba Cloudは、オープンソースMySQLのoptimizer_switchパラメーターに適応します。 MySQL 5.7とMySQL 8.0を実行するRDSインスタンスの場合、新しいフィールドがloose_optimizer_switchパラメーターに追加され、インスタンスチューニングの実行とインスタンスパフォーマンスの向上に役立ちます。
使用上の注意
パラメーターのフィールドを変更する前に、各フィールドの意味と機能を理解することをお勧めします。 これは予期しない状況を防ぐ。 詳細は、「optimizer_switch」をご参照ください。
データボリューム、ワークロード、インスタンス仕様、設定などのビジネス要件に基づいて、パラメーターのフィールドを変更することを推奨します。
最適な設定が得られるまで、パラメーターのフィールドを1つずつ変更し、クエリのパフォーマンスの変化を観察する必要があります。
loose_optimizer_switchパラメーターのフィールドは、MySQLのバージョンによって異なります。 RDSインスタンスが実行するMySQLバージョンに基づいてフィールドを変更する必要があります。
loose_optimizer_switchパラメーターのフィールドとRDSインスタンスのエンジンバージョンの間のマッピング
次の表に示すマッピングに基づいて、フィールドを変更できます。 loose_optimizer_switchパラメーターのフィールドは、それ以降のバージョンと互換性があります。 新しいバージョンでは、以前のバージョンのパラメーターのフィールドがサポートされています。
MySQL 8.0の新しいフィールド
項目 | マイナーエンジン版 |
use_invisible_indexes={on | off} | rds_20190601 |
duplicateweedout={on | off} | |
condition_fanout_filter={on | off} | |
derived_merge={on | off} | |
skip_scan={on | off} | |
hash_join={on | off} | rds_20200331 |
subquery_to_derived = {on | off} | rds_20201231 |
prefer_ordering_index={on | off} | |
derived_condition_pushdown={on | off} |
MySQL 5.7の新しいフィールド
項目 | マイナーエンジン版 |
condition_fanout_filter={on | off} | rds_20190915 |
derived_merge={on | off} | |
duplicateweedout={on | off} | |
prefer_ordering_index={on | off} | rds_20211231 |
MySQL 5.6の新しいフィールド
次の表に示すフィールドは、MySQL 5.6のすべてのマイナーバージョンでサポートされています。
項目 | マイナーエンジン版 |
batched_key_access={on | off} | All |
block_nested_loop={on | off} | |
engine_condition_pushdown={on | off} | |
firstmatch={on | off} | |
index_condition_pushdown={on | off} | |
index_merge={on | off} | |
index_merge_intersection={on | off} | |
index_merge_sort_union={on | off} | |
index_merge_union={on | off} | |
loowescan={on | off} | |
materialization={on | off} | |
mrr={on | off} | |
mrr_cost_based={on | off} | |
semijoin={on | off} | |
subquery_materialization_cost_based={on | off} | |
use_index_extensions={on | off} |
手順
詳細については、「ApsaraDB RDS For MySQLインスタンスのパラメーターの変更」をご参照ください。