STV_INFLIGHT
クラスターで現在どのクエリが実行されているかを調べるには、STV_INFLIGHT テーブルを使用します。トラブルシューティングを行う場合、実行時間が長いクエリのステータスを確認するのに役立ちます。
STV_INFLIGHT はリーダーノードのみのクエリは表示しません。詳細については、「リーダーノード専用関数」を参照してください。STV_INFLIGHT はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_HISTORY でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。
STV_INFLIGHT によるトラブルシューティング
STV_INFLIGHT を使用してクエリまたはクエリのコレクションのパフォーマンスのトラブルシューティングを行う場合は、次の点に注意してください。
実行時間の長いオープントランザクションでは、一般的に負荷が増加します。これらのオープントランザクションにより、他のクエリの実行時間が長くなる可能性があります。
実行時間が長い COPY ジョブと ETL ジョブは、大量のコンピューティングリソースを消費している場合、クラスターで実行されている他のクエリに影響する可能性があります。ほとんどの場合、これらの実行時間の長いジョブをあまり使用しない時間帯に移動すると、レポートや分析のワークロードのパフォーマンスが向上します。
STV_INFLIGHT に関連する情報を提供するビューがあります。これらには、SQL コマンドのクエリテキストをキャプチャする STL_QUERYTEXT と、STV_INFLIGHT を STL_QUERYTEXT に結合する SVV_QUERY_INFLIGHT が含まれます。トラブルシューティングのために、STV_RECENTS を STV_INFLIGHT で使用することもできます。例えば、STV_RECENTS は、特定のクエリの状態が実行中または完了であるかを示すことができます。この情報を STV_INFLIGHT の結果と組み合わせると、クエリのプロパティとコンピューティングリソースへの影響に関する詳細情報を得ることができます。
Amazon Redshift コンソールを使用して実行中のクエリをモニタリングすることもできます。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
userid | integer | エントリを生成したユーザーの ID。 |
slice | integer | クエリが実行されているスライス。 |
query | integer | クエリ ID。他の各種システムテーブルおよびビューを結合するために使用できます。 |
label | character(320) | クエリを実行するために使用される名前、または SET QUERY_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY_GROUP パラメータが設定されていない場合、このフィールドは空になります。 |
xid | bigint | トランザクション ID。 |
pid | integer | プロセス ID。セッション内のすべてのクエリは同一プロセスで実行されるため、一連のクエリを同一セッションで実行した場合、この値は一定です。この列を使用して、STL_ERROR テーブルに結合できます。 |
starttime | timestamp | クエリが開始された時刻。 |
text | character(100) | クエリテキスト。ステートメントが 100 文字を超えた場合は切り捨てられます。 |
suspended | integer | クエリが中断されているかどうかを示します。0 = false で、1 = true です。 |
insert_pristine | integer | 現在のクエリの実行中に書き込みクエリが実行可能であるかどうか。1 = 書き込みクエリが許可されていません。0 = 書き込みクエリが許可されています。この列は、デバッグで使用することが意図されています。 |
concurrency_scaling_status | integer | クエリがメインクラスターで実行されたのか、または同時実行スケーリングクラスターで実行されたのかを示します。有効な値は次のとおりです。 0 - メインクラスターで実行 1 - 同時実行スケーリングクラスターで実行 |
サンプルクエリ
データベースで現在実行中のアクティブなクエリをすべて表示するには、以下のクエリを入力します。
select * from stv_inflight;
以下の出力例には、STV_INFLIGHT クエリ自体と、avgwait.sql
というスクリプトから実行されているクエリが表示されています。
select slice, query, trim(label) querylabel, pid, starttime, substring(text,1,20) querytext from stv_inflight; slice|query|querylabel | pid | starttime | querytext -----+-----+-----------+-----+--------------------------+-------------------- 1011 | 21 | | 646 |2012-01-26 13:23:15.645503|select slice, query, 1011 | 20 |avgwait.sql| 499 |2012-01-26 13:23:14.159912|select avg(datediff( (2 rows)
次のクエリは、concurrency_scaling_status を含む複数の列を選択します。この列は、クエリが同時実行スケーリングクラスターに送信されているかどうかを示します。一部の結果で値が 1
である場合は、同時実行スケーリングコンピューティングリソースが使用されていることを示します。詳細については、「同時実行スケーリングを使用する」を参照してください。
select userid, query, pid, starttime, text, suspended, concurrency_scaling_status from STV_INFLIGHT;
サンプル出力は、1 つのクエリが同時実行スケーリングクラスターに送信されていることを示しています。
query | pid | starttime | text | suspended | concurrency_scaling_status --------+---------+----------------------------|------------------------|---------------|------------------------------- 1234567 | 123456 | 2012-01-26 13:23:15.645503 | select userid, query... 0 1 2345678 | 234567 | 2012-01-26 13:23:14.159912 | select avg(datediff(... 0 0 (2 rows)
クエリパフォーマンスのトラブルシューティングの詳細については、「クエリのトラブルシューティング」を参照してください。