STV_RECENTS
現在アクティブなクエリや、最近データベースに対して実行されたクエリに関する情報を取得するには、STV_RECENTS テーブルを使用します。
STV_RECENTS はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_HISTORY でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。
STV_RECENTS によるトラブルシューティング
STV_RECENTS は、クエリまたはクエリのコレクションが現在実行中であるか完了しているかを判断する場合に特に役立ちます。また、クエリが実行されていた期間も示します。これは、どのクエリの実行時間が長いかを把握するのに役立ちます。
STV_RECENTS を STV_INFLIGHT などの他のシステムビューに結合して、実行中のクエリに関する追加のメタデータを収集できます (この方法を示すサンプルクエリセクションがあります)。このビューから返されたレコードを Amazon Redshift コンソールのモニタリング機能と共に使用して、リアルタイムでトラブルシューティングを行うこともできます。
STV_RECENTS を補完するシステムビューには、SQL コマンドのクエリテキストを取得する STL_QUERYTEXT と、STV_INFLIGHT を STL_QUERYTEXT に結合する SVV_QUERY_INFLIGHT が含まれます。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
userid | integer | エントリを生成したユーザーの ID。 |
status | character(20) | クエリのステータス 有効な値は Running 、Done です。 |
starttime | timestamp | クエリが開始された時刻。 |
duration | integer | セッション開始後の経過時間をマイクロ秒で示します。 |
user_name | character(50) | 処理を実行しているユーザーの名前。 |
db_name | character(50) | データベースの名前 |
query | character(600) | 600 文字以内のクエリテキスト。600 文字を超えるテキストは切り捨てられます。 |
pid | integer | クエリに関連付けられたセッションのプロセス ID。クエリが完了している場合は -1 です。 |
サンプルクエリ
データベースに対して現在実行されているクエリを確認するには、次のクエリを実行します。
select user_name, db_name, pid, query from stv_recents where status = 'Running';
以下の出力例には、TICKIT データベース上で実行されているクエリが 1 つ表示されています。
user_name | db_name | pid | query ----------+---------+---------+------------- dwuser | tickit | 19996 |select venuename, venueseats from venue where venueseats > 50000 order by venueseats desc;
次の例では、実行中のクエリまたはキュー内で実行を待機中のクエリ (存在する場合) のリストを返します。
select * from stv_recents where status<>'Done'; status | starttime | duration |user_name|db_name| query | pid -------+---------------------+----------+---------+-------+-----------+------ Running| 2010-04-21 16:11... | 281566454| dwuser |tickit | select ...| 23347
複数の同時実行クエリを実行中で、そのうちのいくつかがキューにある場合を除き、このクエリは結果を返しません。
以下の例は、前の例を拡張したものです。この場合、真に「フライト中」 (待機中でなく実行中) のクエリは結果から除外されます。
select * from stv_recents where status<>'Done' and pid not in (select pid from stv_inflight); ...
クエリパフォーマンスのトラブルシューティングの詳細については、「クエリのトラブルシューティング」を参照してください。