

# Amazon RDS の Performance Insights ダッシュボードを使用した実行プランの分析
<a name="USER_PerfInsights.UsingDashboard.AnalyzingPlans"></a>

Amazon RDS Performance Insights ダッシュボードでは、Oracle および SQL Server DB インスタンスの実行プランに関する情報を確認できます。この情報を使用して、どのプランが DB 負荷に最も影響しているかを知ることができます。

Oracle または SQL Server の実行プランを分析するには、以下のトピックを参照してください。

**実行プランの分析**
+ [Amazon RDS の Performance Insights ダッシュボードを使用した Oracle 実行プランの分析](USER_PerfInsights.UsingDashboard.AccessPlans.md)
+ [Amazon RDS の Performance Insights ダッシュボードを使用した SQL Server 実行プランの分析](USER_PerfInsights.UsingDashboard.AccessPlansSqlServer.md)

## Amazon RDS の実行プランの分析の概要
<a name="USER_PerfInsights.UsingDashboard.AnalyzingPlans.Overview"></a>

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 でスライスできるのと同様に、プランのディメンションでスライスできます。