実行プランの分析の概要 - Amazon Relational Database Service

実行プランの分析の概要

Amazon RDS Performance Insights ダッシュボードを使用して、Oracle および SQL Server DB インスタンスの DB 負荷に最も影響しているプランを確認できます。

例えば、特定の時点の上位の SQL ステートメントが、次の表に示すプランを使用している場合があります。

上位の SQL 計画

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 10

プラン A

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 521

プラン B

SELECT SUM(s_total) FROM sales WHERE region = 10

プラン A

SELECT * FROM emp WHERE emp_id = 1000

プラン C

SELECT SUM(amount_sold) FROM sales WHERE prod_id = 72

プラン A

Performance Insights のプランニング機能を使用すると、以下を実行できます。

  • 上位 SQL クエリでどのプランが使用されているかを確認する。

    例えば、DB の負荷の大部分は、プラン A とプラン B を使用したクエリによって生成され、プラン C を使用する割合はごく小規模だということがあります。

  • 同じクエリについてさまざまなプランを比較する。

    前の例では、製品 ID を除けば、3 つのクエリは同一です。この内 2 つのクエリでプラン A が使用されますが、1 つのクエリではプラン B を使用しています。2 つのプランの違いを確認するには、Performance Insights を使用します。

  • クエリが新しいプランに切り替わった時期を確認する。

    プラン A を使用するクエリで、特定のタイミングでプラン B に切り替えられたことを確認できます。この時点で、データベースに変更があったかどうか。例えば、テーブルが空の場合、オプティマイザはテーブル全体に対するスキャンを選択することがあります。仮にテーブルに 100 万行がロードされたとすると、オプティマイザはインデックス範囲のスキャンに切り替えます。

  • コストが最も高いプランの特定のステップにドリルダウンします。

    例えば、実行時間の長いクエリで、等価結合に結合条件がないと表示される場合があります。この欠落条件により、2 つのテーブルのすべての行を結合するデカルト結合が強制的に実行されます。

上記のタスクは、Performance Insights のプランキャプチャ機能を使用して実行できます。クエリは、待機イベントと上位 SQL でスライスできるのと同様に、プランのディメンションでスライスできます。