インデックス アドバイザーを使用する

このページでは、Cloud SQL for MySQL インデックス アドバイザーについて説明するとともに、インデックスに関する推奨事項を確認して適用する方法を説明します。

Cloud SQL for MySQL には、データベースによって処理されるクエリを追跡する「インデックス アドバイザー」があります。インデックス アドバイザーによってクエリが定期的に分析され、そのクエリのパフォーマンスを高める新しいインデックスが提案されます。

インデックス アドバイザーによる推奨事項はテーブルとして出力され、クエリを実行して表示できます。また、オンデマンド分析とレポートをいつでもリクエストできます。

インデックス アドバイザーの推奨事項を有効にする

インデックス アドバイザーによる推奨事項が作成されるようにするには、Cloud SQL for MySQL インスタンスに cloudsql_index_advisor フラグと performance_schema フラグを追加します。

インスタンスにフラグを追加する方法については、データベース フラグを構成するをご覧ください。

インデックス アドバイザーの推奨事項を無効にする

インデックス アドバイザーによる推奨事項の作成を停止するには、Cloud SQL for MySQL インスタンスから cloudsql_index_advisor フラグと 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 フラグを使用します。詳細については、インデックス アドバイザーのフラグをご覧ください。