メニュー
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] の表示

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

クエリ実行の詳細を表示するには

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

  2. 左のナビゲーションペインの [Clusters] をクリックします。

  3. [Cluster] リストで、クエリ実行の詳細を表示するクラスターを選択します。

  4. [Queries] タブをクリックし、パフォーマンスデータを表示するクエリを開きます。

  5. [Query Execution Details] セクションを展開し、以下の操作を行います。

    1. [Plan] タブで、クエリの説明プランを確認します。説明プランが [Actual] タブの実際のクエリ実行と異なる場合は、ANALYZE を実行して統計を更新するか、データベースでその他のメンテナンスを実行して、実行するクエリの最適化が必要になる可能性があります。クエリの最適化の詳細については、Amazon Redshift Database Developer Guide の「クエリパフォーマンスのチューニング」を参照してください。

    2. [Actual] タブで、クエリ実行の各計画ノードに関連付けられたパフォーマンスデータを確認します。階層の個別の計画ノードをクリックすると、特定の計画ノードに関連付けられたパフォーマンスデータを表示できます。このデータには、予測データと実際のパフォーマンスデータの両方が含まれます。