メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

クエリ実行の分析

[Query] ビューの [Query Execution Details] セクションには、クエリの処理方法の詳細が表示されます。このセクションでは、SVL_QUERY_REPORTSTL_EXPLAIN、および他のシステムビューやシステムテーブルからのデータが組み合わされます。

[Query Execution Details] セクションには 2 つのタブがあります。

  • [Plan]。このタブには、表示されているクエリの説明プランが表示されます。

  • [Actual]。このタブには、実行されたクエリの実際のステップと統計が表示されます。この情報は、テキストの階層と視覚的なグラフで表示されます。グラフの棒の上にカーソルを移動すると、次に示すように、関連ステップの [Avg] や [Max] 統計が表示されます。

    [Avg] 統計には、データスライス間のステップの平均値実行時間、およびその時間が表す合計クエリ実行時間の割合が表示されます。[Max] 統計は、任意のデータスライスのステップの最長実行時間とスキューを示します。スキューとは、ステップの平均実行時間と最大実行時間の差のことです。クエリの複数の実行で、最大実行時間が常に平均実行時間の 2 倍以上になる場合や、ステップに長い時間がかかる (たとえば、大規模なクエリの実行時間のトップ 3 のステップに入る) 場合は、ステップについて調査することをお勧めします。

    注記

    可能であれば、クエリを 2 回実行して、典型的な実行の詳細を確認します。コンパイルを行うと、それ以降の実行には存在しないオーバーヘッドが、クエリの最初の実行に追加されます。

    ステップの高いスキューを調査するには、クエリプランの分散ステップについて、クエリで実行される分散の種類を確認し、その分散を変更する必要があるかどうか、データ分散戦略を見直します。Amazon Redshift データ分散の詳細については、Amazon Redshift Database Developer Guide の「データ分散スタイルの選択」を参照してください。

    次に示すように、グラフの任意の棒をクリックして、説明プランから予測されるデータを、クエリの実際のパフォーマンスと比較することができます。

    クエリオプティマイザが STL_ALERT_EVENT_LOG システムテーブルでアラートを生成した場合、アラートに関連付けられた計画ノードにはアラートアイコンが付きます。

[Plan] タブの情報は、データベースでの EXPLAIN コマンドの実行と似ています。EXPLAIN コマンドでは、クエリテキストを調べ、クエリプランを返します。この情報を使用してクエリを評価し、必要に応じて効率とパフォーマンスを高めるために変更します。EXPLAIN コマンドは実際にクエリを実行しません。

次の例は、2008 年に販売されたチケット数と、そのクエリのクエリプランに基づき、サンディエゴで最も販売数の多かった販売会社 5 社を返します。

Copy
explain select sellerid, username, (firstname ||' '|| lastname) as name, city, sum(qtysold) from sales, date, users where sales.sellerid = users.userid and sales.dateid = date.dateid and year = 2008 and city = 'San Diego' group by sellerid, username, name, city order by 5 desc limit 5;

説明プランの詳細については、Amazon Redshift データベース開発者ガイド の「説明プランの分析」を参照してください。

実際にクエリを実行する (EXPLAIN コマンドを省略) すると、エンジンはクエリパフォーマンスを最適化し、クエリの処理を変更する方法を発見できる可能性があります。クエリの実際のパフォーマンスデータは、SVL_QUERY_REPORTSVL_QUERY_SUMMARY などのシステムビューに保存されます。

Amazon Redshift コンソールは、STL_EXPLAIN、SVL_QUERY_REPORT、およびその他のシステムビューやシステムテーブルを組み合わせて使用して実際のクエリパフォーマンスを表し、それをクエリの説明プランと比較します。この情報は [Actual] タブに表示されます。説明プランと実際のクエリ実行ステップが異なる場合は、ANALYZE などのデータベースでオペレーションを実行して統計を更新し、説明プランをより効果的にします。

さらに、クエリオプティマイザは場合によっては複雑な SQL クエリをパートに分割し、volt_tt_guid という命名規則で一時テーブルを作成して、クエリをより効率的に処理します。この場合、説明プランと実際のクエリ実行の要約の両方は、最後に実行されたステートメントに適用されます。前のクエリ ID を確認して、クエリに対応する各パートの説明プランと実際のクエリの要約を表示できます。

説明プランとシステムビューおよびログとの違いの詳細については、Amazon Redshift データベース開発者ガイドの「クエリの概要の分析」を参照してください。

コンソールを使用した [Query Execution Details] の表示

クエリ実行の詳細を表示するには、次の手順を使用します。

To view query execution details

  1. AWS マネジメントコンソールにサインインし、Amazon Redshift コンソール(https://console.aws.amazon.com/redshift/)を開きます。

  2. In the left navigation pane, click Clusters.

  3. In the Cluster list, select the cluster for which you want to view query execution details.

  4. Click the Queries tab, and open the query for which you want to view performance data.

  5. Expand the Query Execution Details section and do the following:

    1. On the Plan tab, review the explain plan for the query. If you find that your explain plan differs from the actual query execution on the Actual tab, you might need to run ANALYZE to update statistics or perform other maintenance on the database to optimize the queries you run. For more information about query optimization, see Tuning Query Performance in the Amazon Redshift Database Developer Guide.

    2. On the Actual tab, review the performance data associated with each of the plan nodes in the query execution. You can click an individual plan node in the hierarchy to view performance data associated with that specific plan node. This data will include both the estimated and actual performance data.