SVV_QUERY_STATE
SVV_QUERY_STATE を使用して、現在実行されているクエリのランタイムについての情報を表示します。
SVV_QUERY_STATE ビューには STV_EXEC_STATE テーブルのデータのサブセットが含まれます。
SVV_QUERY_STATE はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_DETAIL でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。
注記
このビューはプロビジョニングされたクラスターをクエリする場合のみ使用できます。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
userid | integer | エントリを生成したユーザーの ID。 |
query | integer | クエリ ID。他の各種システムテーブルおよびビューを結合するために使用できます。 |
seg | integer | 実行されているクエリセグメントの数。複数のセグメントから構成された 1 つのクエリ。各セグメントは 1 つ以上のステップから構成されます。複数のクエリセグメントを同時に実行できます。各セグメントは 1 つのプロセスで実行されます。 |
step | integer | 実行されているクエリステップの数。ステップとは、クエリのランタイムの最小単位です。各ステップはテーブルのスキャン、結果の返却、データのソートなど、作業の個別の単位を表します。 |
maxtime | interval | このステップを実行する最大時間 (マイクロ秒)。 |
avgtime | interval | このステップを実行する平均時間 (マイクロ秒)。 |
rows | bigint | 実行中のステップが生成した行の数。 |
bytes | bigint | 実行中のステップが生成したバイト数。 |
cpu | bigint | 内部使用を目的とします。 |
memory | bigint | 内部使用を目的とします。 |
rate_row | double precision | クエリが開始されてからの行毎秒率。行を合計し、クエリが開始されてから現在時刻までの秒数で除算することで算出されます。 |
rate_byte | double precision | クエリが開始されてからのバイト毎秒率。バイトを合計し、クエリが開始されてから現在時刻までの秒数で除算することで算出されます。 |
label | character(25) | クエリラベル: ステップの名前 (scan またはsort など)。 |
is_diskbased | character(1) | クエリのこのステップがディスクベースの処理として実行されているかどうか: true (t ) または false (f )。ハッシュ、ソート、集計といった特定のステップのみがディスクベースで実行できます。ステップの多くのタイプは、常にメモリ内で実行されます。 |
workmem | bigint | クエリステップに割り当てられた作業メモリの量 (バイト単位)。 |
num_parts | integer | ハッシュテーブルがハッシュステップ中に分割されるパーティションの数。この列にある正の数は、ハッシュステップがディスクベースのオペレーションとして実行されることを示すものではありません。ハッシュステップがディスクベースであったかどうかを調べるには、IS_DISKBASED 列の値を見てください。 |
is_rrscan | character(1) | true (t ) の場合は、ステップで範囲限定スキャンが使用されたことを示します。デフォルトは false (f ) です。 |
is_delayed_scan | character(1) | true (t ) の場合は、ステップで遅延スキャンが使用されたことを示します。デフォルトは false (f ) です。 |
サンプルクエリ
クエリの処理時間をステップごとに算出する
以下のクエリは、クエリ ID が 279 のクエリの各ステップを実行するためにかかった時間と、Amazon Redshift が処理したデータ行の数を表示します。
select query, seg, step, maxtime, avgtime, rows, label from svv_query_state where query = 279 order by query, seg, step;
このクエリは次のサンプル出力で示されているように、クエリ 279 についての処理情報を取得します。
query | seg | step | maxtime | avgtime | rows | label ------+---------+------+---------+---------+---------+------------------- 279 | 3 | 0 | 1658054 | 1645711 | 1405360 | scan 279 | 3 | 1 | 1658072 | 1645809 | 0 | project 279 | 3 | 2 | 1658074 | 1645812 | 1405434 | insert 279 | 3 | 3 | 1658080 | 1645816 | 1405437 | distribute 279 | 4 | 0 | 1677443 | 1666189 | 1268431 | scan 279 | 4 | 1 | 1677446 | 1666192 | 1268434 | insert 279 | 4 | 2 | 1677451 | 1666195 | 0 | aggr (7 rows)
ディスクで現在実行中のアクティブなクエリを確認する
次のクエリは、ディスクで現在実行中のアクティブなクエリを示します。
select query, label, is_diskbased from svv_query_state where is_diskbased = 't';
このサンプル出力は、ディスクで現在実行中のアクティブなクエリを示します。
query | label | is_diskbased -------+--------------+-------------- 1025 | hash tbl=142 | t (1 row)