SVL_QUERY_REPORT - Amazon Redshift

SVL_QUERY_REPORT

Amazon Redshift は、Amazon Redshift の STL システムテーブルのいくつかを UNION (結合) したものから SVL_QUERY_REPORT ビューを作成し、完了済みのクエリステップに関する情報を提供します。

このビューは、完了済みのクエリに関する情報を、スライスごと、およびステップごとに分類します。これは、Amazon Redshift クラスターでのノードやスライスの問題のトラブルシューティングに役立ちます。

SVL_QUERY_REPORT はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_DETAIL でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。

テーブルの列

列名 データ型 説明
userid integer エントリを生成したユーザーの ID。
query integer クエリ ID。他の各種システムテーブルおよびビューを結合するために使用できます。
slice integer ステップが実行されたデータスライス。
segment integer

セグメント番号。

複数のセグメントから構成された 1 つのクエリ。各セグメントは 1 つ以上のステップから構成されます。複数のクエリセグメントを同時に実行できます。各セグメントは 1 つのプロセスで実行されます。

step integer 完了されたクエリステップ。
start_time timestamp セグメントの実行が開始された正確な時間 (UTC)。小数秒は 6 桁まで示されます。例: 2012-12-12 11:29:19.131358
end_time timestamp セグメントの実行が終了した正確な時間 (UTC)。小数秒は 6 桁まで示されます。例: 2012-12-12 11:29:19.131467
elapsed_time bigint セグメントの実行にかかった時間 (マイクロ秒)。
rows bigint ステップが生成した行の数 (スライスあたり)。この数値はステップを実行した結果生成されたスライスの行数を表すもので、ステップが受け取った、または処理した行の数ではありません。すなわち、この数値はステップの実行後、次のステップに渡された行の数です。
bytes bigint ステップが生成したバイトの数 (スライスあたり)。
ラベル char(256) クエリステップ名および該当する場合はテーブル ID とテーブル名 (scan tbl=100448 name =user など) からなるステップラベル。3 桁のテーブル ID は通常、一時テーブルのスキャンを照会します。 tbl=0 は、通常、定数値のスキャンを指します。
is_diskbased character(1) クエリのこのステップがディスクベースのオペレーションとして実行されたかどうか: true (t) または false (f)。ハッシュ、ソート、集計といった特定のステップのみがディスクベースで実行できます。ステップの多くのタイプは、常にメモリ内で実行されます。
workmem bigint クエリステップに割り当てられた作業メモリの量 (バイト単位)。この値は実行中に使用するために割り当てられた query_working_mem しきい値です。実際に使用されたメモリの量ではありません。
is_rrscan character(1) true (t) の場合は、ステップで範囲限定スキャンが使用されたことを示します。
is_delayed_scan character(1) true (t) の場合は、ステップで遅延スキャンが使用されたことを示します。
rows_pre_filter bigint 永続テーブルのスキャンの場合は、削除対象としてマークされた行 (非実体の行) をフィルタリングする前でユーザー定義のクエリフィルタが適用される前に出力された合計行数。

サンプルクエリ

次のクエリは、クエリ ID 279 のクエリを実行したときに返される行のデータの偏りを示します。このクエリを使用して、データベースのデータがデータウェアハウスクラスターのスライス全体に均等に分散されているかどうかを確認します。

select query, segment, step, max(rows), min(rows), case when sum(rows) > 0 then ((cast(max(rows) -min(rows) as float)*count(rows))/sum(rows)) else 0 end from svl_query_report where query = 279 group by query, segment, step order by segment, step;

このクエリにより返されるデータは、以下のサンプルの出力のようになります。

query | segment | step | max | min | case ------+---------+------+----------+----------+---------------------- 279 | 0 | 0 | 19721687 | 19721687 | 0 279 | 0 | 1 | 19721687 | 19721687 | 0 279 | 1 | 0 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 1 | 986085 | 986084 | 1.01411202804304e-06 279 | 1 | 4 | 986085 | 986084 | 1.01411202804304e-06 279 | 2 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 2 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 2 | 1775517 | 788460 | 1.00098637606408 279 | 3 | 3 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 0 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 1 | 1775517 | 788460 | 1.00098637606408 279 | 4 | 2 | 1 | 1 | 0 279 | 5 | 0 | 1 | 1 | 0 279 | 5 | 1 | 1 | 1 | 0 279 | 6 | 0 | 20 | 20 | 0 279 | 6 | 1 | 1 | 1 | 0 279 | 7 | 0 | 1 | 1 | 0 279 | 7 | 1 | 0 | 0 | 0 (19 rows)