このページでは、Cloud SQL for MySQL インデックス アドバイザーについて説明するとともに、インデックスに関する推奨事項を確認して適用する方法を説明します。
Cloud SQL for MySQL には、データベースによって処理されるクエリを追跡する「インデックス アドバイザー」があります。インデックス アドバイザーによってクエリが定期的に分析され、そのクエリのパフォーマンスを高める新しいインデックスが提案されます。
インデックス アドバイザーによる推奨事項はテーブルとして出力され、クエリを実行して表示できます。また、オンデマンド分析とレポートをいつでもリクエストできます。
インデックス アドバイザーの推奨事項を有効にする
インデックス アドバイザーの推奨事項を有効にするには、Gemini in Databases を設定します。
インデックス アドバイザーの推奨事項を無効にする
インデックス アドバイザーの推奨事項を無効にするには、Cloud SQL for MySQL インスタンスからcloudsql_index_advisor
フラグを削除します。インデックス アドバイザーの performance_schema
フラグを有効にした場合は、performance_schema
フラグを有効のままにするか、無効にするかを選択できます。
インスタンスからフラグを削除する方法については、データベース フラグを構成するをご覧ください。
インデックス アドバイザーの推奨事項を表示する
Cloud SQL for MySQL によって、インデックス アドバイザーの定期的な分析が自動的に実行されます。
その結果は、mysql
データベースにある次のテーブルから読み取ることができます。
mysql.cloudsql_db_advisor_recommended_indexes
: 各データベースに対して推奨される新しいインデックスのリストです。これには、各インデックスに必要なストレージの推定値と、各インデックスの影響を受ける可能性のあるクエリの数も含まれます。
たとえば、インデックスに関する推奨事項の最新の分析結果をテーブル形式で見るには、次のクエリを実行します。
SELECT * FROM mysql.cloudsql_db_advisor_recommended_indexes;
インデックス アドバイザーの推奨事項を適用する
mysql.cloudsql_db_advisor_recommended_indexes
テーブルの各行の index
列には、その行で推奨されるインデックスを生成するための完全な MySQL CREATE INDEX
DDL ステートメントが格納されています。
その行の推奨事項を適用するには、その DDL ステートメントを、提示されているとおりに実行してください。
たとえば、前のセクションで説明したクエリを使用して、手動で分析を実行した結果の出力が次のとおりであるとします。
index | estimated_storage_size_in_mb
--------------------------------------------+------------------------------
CREATE INDEX ON "School"."Students"("age") | 3
(1 row)
このレポートに含まれている推奨事項は 1 件だけで、School
スキーマの Students
テーブルの age
列に単一列インデックスを追加するというものです。このアドバイスを適用するには、このレポートで提示されている、次の DDL クエリを入力します。
CREATE INDEX ON "School"."Students"("age");
インデックス アドバイザーを構成する
インデックス アドバイザーは、ほとんどのユースケースにデフォルト設定で対応できるように設計されていますが、ユーザーはさまざまなデータベース フラグを設定してその動作を微調整できます。
デフォルトでは、インデックス アドバイザーは 24 時間間隔で実行されます。この自動スケジュール時間を変更するには cloudsql_index_advisor_auto_advisor_schedule
フラグを使用します。また、特定の日時にアドホック分析を実行するには cloudsql_index_advisor_run_at_timestamp
フラグを使用します。詳細については、インデックス アドバイザーのフラグをご覧ください。