【正解】C
【0からの解説】
①前提知識
Query Insights は、Cloud SQL に組み込まれたクエリ パフォーマンスの診断機能です。有効にすると、データベースの負荷をクエリ単位・タグ単位で可視化し、実行時間・実行回数・スキャン行数などからどのクエリが負荷を生んでいるかを特定できます。クエリ プラン(実行計画)の確認や、アプリケーション側でタグ(Sqlcommenter)を付けることでどのアプリケーション コードが問題のクエリを発行しているかの追跡もできます。追加のツールを導入する必要がなく、Cloud SQL Enterprise エディションと Enterprise Plus エディションの両方で利用できます(Enterprise Plus ではより長い保持期間などの拡張機能があります)。
②要件と制約の整理
・非効率なクエリが原因と推測している。
・「問題のあるクエリを特定して分析」し、その結果を「アプリケーション チームに引き渡して最適化」してもらいたい。
→ 必要なのは、クエリ レベルで原因を特定・分析できるツール。
③正解が要件を満たす理由
Query Insights を有効にすれば、ピーク時に負荷の高いクエリを上位から特定し、そのクエリの実行計画や待機要因、呼び出し元のアプリケーション情報まで確認できます。これらの情報をそのままアプリケーション チームに渡してクエリの書き換えやインデックス追加を依頼できるため、要件を直接満たします。
【誤りの選択肢】
A:アンダープロビジョニング インスタンスのレコメンダーは、CPU やメモリが不足しているインスタンスに対してマシンタイプの増強を提案する機能です。リソース不足は分かっても、どのクエリが非効率なのかは特定できません。
B:read_buffer_size はシーケンシャル スキャン用のバッファ サイズを調整する MySQL のフラグで、推測に基づくチューニングにすぎません。問題のクエリを特定・分析するという要件を満たさず、値を大きくしすぎるとメモリ消費が増える副作用もあります。
D:database/mysql/queries はクエリ数(実行された文の数)の指標で、アラートを作れば負荷の増加は検知できますが、どのクエリが非効率なのかを特定・分析する情報は得られません。
【参考】
Query Insights を使用してクエリのパフォーマンスを向上させる | Cloud SQL for MySQL