SYS_QUERY_HISTORY - Amazon Redshift (original) (raw)

ユーザークエリーの詳細表示には、SYS_QUERY_HISTORY を使用します。いくつかのフィールドに関する累積統計を含むユーザークエリが、それぞれの行により表されます。このビューには、データ定義言語 (DDL)、データ操作言語 (DML)、コピー、アンロード、Amazon Redshift Spectrum など、さまざまな種類のクエリが含まれています。ここには、実行中のクエリと終了したクエリの両方が表示されます。

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

テーブルの列

列名 データ型 説明
user_id integer クエリを送信したユーザーの ID。
query_id bigint クエリ識別子。
query_label character(320) クエリ名の短縮形。
transaction_id bigint トランザクション識別子。
session_id integer クエリを実行しているプロセスのプロセス識別子。
database_name character(128) クエリが発行されたときにユーザーが接続されたデータベースの名前。
query_type character(32) クエリのタイプ (SELECT、INSERT、UPDATE、UNLOAD、COPY、COMMAND、DDL、UTILITY、CTAS、OTHER など)。
status character(10) クエリのステータス。有効な値: 計画 (planning)、キュー済み (queued)、実行中 (running)、終了中 (returning)、失敗 (failed)、キャンセル済み (canceled)、成功 (success)。
result_cache_hit ブール値 クエリが結果キャッシュと一致するかどうかを示します。
start_time timestamp クエリが開始された時刻。
end_time timestamp クエリが完了した時刻。
elapsed_time bigint クエリの実行が消費した合計時間 (マイクロ秒)。
queue_time bigint サービスクラスクエリのキューが消費した合計時間 (マイクロ秒)。
execution_time bigint サービスクラスで実行されている合計時間 (マイクロ秒)。
error_message character(512) クエリが失敗した理由。
returned_rows bigint クライアントに返された行の数。
returned_bytes bigint クライアントに返されたバイト数。
query_text character(4000) クエリ文字列。この文字列は切り詰められることがあります。
redshift_version character(256) クエリ実行時の Amazon Redshift のバージョン。
usage_limit character(150) クエリによって到達した使用制限 ID のリスト。
compute_type varCHAR(32) クエリがメインクラスターまたは同時実行スケーリングクラスターのどちらで実行されるかを示します。指定できる値は、primary (クエリはメインクラスターで実行)、secondary (クエリはセカンダリクラスターで実行)、または primary-scale (クエリは同時実行クラスターで実行) です。これはプロビジョニングされたクラスターにのみ適用されます。
compile_time bigint クエリのコンパイルに費やされた合計時間 (マイクロ秒)。
planning_time bigint クエリのプランニングに費やされた合計時間 (マイクロ秒)。
lock_wait_time bigint リレーションロックを待機して費やされた合計時間 (マイクロ秒)。
service_class_id integer サービクラスの ID サービスクラス ID のリストについては、「WLM サービスクラス ID」を参照してください。 この列は、プロビジョニングされたクラスターで実行されるクエリにのみ使用されます。Redshift Serverless で実行されるクエリの場合、この列には -1 が含まれます。
service_class_name character(64) サービクラス名。 この列は、プロビジョニングされたクラスターで実行されるクエリにのみ使用されます。Amazon Redshift Serverless で実行されるクエリの場合、この列は空です。
query_priority character(20) クエリが実行されたキューの優先度。可能な値は以下のとおりです。 NULL lowest low 正常 high highest NULL は、そのクエリではクエリの優先度がサポートされていないことを意味します。 この列は、プロビジョニングされたクラスターで実行されるクエリにのみ使用されます。Redshift Serverless で実行されるクエリの場合、この列は空です。
short_query_accelerated character(10) ショートクエリアクセラレーション (SQA) を使用してクエリが高速化されたかどうか。可能な値は以下のとおりです。 true false NULL この列は、プロビジョニングされたクラスターで実行されるクエリにのみ使用されます。Redshift Serverless で実行されるクエリの場合、この列は空です。

サンプルクエリ

次のクエリは、実行中とキューに登録されたクエリを返します。

SELECT user_id,
       query_id,
       transaction_id,
       session_id,
       status,
       trim(database_name) AS database_name,
       start_time,
       end_time,
       result_cache_hit,
       elapsed_time,
       queue_time,
       execution_time
FROM sys_query_history
WHERE status IN ('running','queued')
ORDER BY start_time;

サンプル出力。

 user_id | query_id | transaction_id | session_id | status  | database_name |        start_time         |          end_time          | result_cache_hit | elapsed_time | queue_time | execution_time
---------+----------+----------------+------------+---------+---------------+---------------------------+----------------------------+------------------+--------------+------------+----------------
     101 |   760705 |         852337 | 1073832321 | running | tpcds_1t      | 2022-02-15 19:03:19.67849 | 2022-02-15 19:03:19.739811 | f                |        61321 |          0 |              0

次のクエリは、特定のクエリのクエリ開始時間、終了時間、キュー時間、経過時間、プランニング時間、およびその他のメタデータを返します。

SELECT user_id,
       query_id,
       transaction_id,
       session_id,
       status,
       trim(database_name) AS database_name,
       start_time,
       end_time,
       result_cache_hit,
       elapsed_time,
       queue_time,
       execution_time,
       planning_time,
       trim(query_text) as query_text
FROM sys_query_history
WHERE query_id = 3093;

サンプル出力。

user_id | query_id | transaction_id | session_id |   status   | database_name |         start_time         |          end_time          | result_cache_hit | elapsed_time | queue_time | execution_time | planning_time | query_text
--------+----------+----------------+------------+------------+---------------+----------------------------+----------------------------+------------------+--------------+------------+----------------+---------------+-------------------------------------
    106 |     3093 |          11759 | 1073750146 | success    | dev           | 2023-03-16 16:53:17.840214 | 2023-03-16 16:53:18.106588 | f                |       266374 |          0 |         105725 |        136589 | select count(*) from item;

次のクエリは、最近実行された 10 件の SELECT クエリを一覧表示します。

SELECT query_id,
       transaction_id,
       session_id,
       start_time,
       elapsed_time,
       queue_time,
       execution_time,
       returned_rows,
       returned_bytes
FROM sys_query_history
WHERE query_type = 'SELECT'
ORDER BY start_time DESC limit 10;

サンプル出力。


 query_id | transaction_id | session_id |         start_time         | elapsed_time | queue_time | execution_time | returned_rows | returned_bytes
----------+----------------+------------+----------------------------+--------------+------------+----------------+---------------+----------------
   526532 |          61093 | 1073840313 | 2022-02-09 04:43:24.149603 |       520571 |          0 |         481293 |             1 |           3794
   526520 |          60850 | 1073840313 | 2022-02-09 04:38:27.24875  |       635957 |          0 |         596601 |             1 |           3679
   526508 |          60803 | 1073840313 | 2022-02-09 04:37:51.118835 |       563882 |          0 |         503135 |             5 |          17216
   526505 |          60763 | 1073840313 | 2022-02-09 04:36:48.636224 |       649337 |          0 |         589823 |             1 |            652
   526478 |          60730 | 1073840313 | 2022-02-09 04:36:11.741471 |     14611321 |          0 |       14544058 |             0 |              0
   526467 |          60636 | 1073840313 | 2022-02-09 04:34:11.91463  |     16711367 |          0 |       16633767 |             1 |            575
   511617 |         617946 | 1074009948 | 2022-01-20 06:21:54.44481  |      9937090 |          0 |        9899271 |           100 |          12500
   511603 |         617941 | 1074259415 | 2022-01-20 06:21:45.71744  |      8065081 |          0 |        7582500 |           100 |           8889
   511595 |         617935 | 1074128320 | 2022-01-20 06:21:44.030876 |      1051270 |          0 |        1014879 |             1 |             72
   511584 |         617931 | 1074030019 | 2022-01-20 06:21:42.764088 |       609033 |          0 |         485887 |           100 |           8438

次のクエリは、毎日実行される選択クエリ数と平均クエリ経過時間を表示しています。

SELECT date_trunc('day',start_time) AS exec_day,
       status,
       COUNT(*) AS query_cnt,
       AVG(datediff (microsecond,start_time,end_time)) AS elapsed_avg
FROM sys_query_history
WHERE query_type = 'SELECT'
AND start_time >= '2022-01-14'
AND start_time <= '2022-01-18'
GROUP BY exec_day,
         status
ORDER BY exec_day,
         status;

サンプル出力。

      exec_day       | status  | query_cnt | elapsed_avg
---------------------+---------+-----------+------------
 2022-01-14 00:00:00 | success |      5253 |  56608048
 2022-01-15 00:00:00 | success |      7004 |  56995017
 2022-01-16 00:00:00 | success |      5253 |  57016363
 2022-01-17 00:00:00 | success |      5309 |  55236784
 2022-01-18 00:00:00 | success |      8092 |  54355124

次のクエリは、毎日実行されるクエリ経過時間のパフォーマンスを表示しています。

SELECT distinct date_trunc('day',start_time) AS exec_day,
       query_count.cnt AS query_count,
       Percentile_cont(0.5) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P50_runtime,
       Percentile_cont(0.8) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P80_runtime,
       Percentile_cont(0.9) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P90_runtime,
       Percentile_cont(0.99) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P99_runtime,
       Percentile_cont(1.0) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS max_runtime
FROM sys_query_history
LEFT JOIN (SELECT  date_trunc('day',start_time) AS day, count(*) cnt
           FROM sys_query_history
           WHERE query_type = 'SELECT'
           GROUP by 1) query_count
ON date_trunc('day',start_time) = query_count.day
WHERE query_type = 'SELECT'
ORDER BY exec_day;

サンプル出力。


      exec_day       | query_count | p50_runtime | p80_runtime | p90_runtime | p99_runtime  | max_runtime
---------------------+-------------+-------------+-------------+-------------+--------------+--------------
 2022-01-14 00:00:00 |        5253 |  16816922.0 |  69525096.0 | 158524917.8 | 486322477.52 | 1582078873.0
 2022-01-15 00:00:00 |        7004 |  15896130.5 |  71058707.0 | 164314568.9 | 500331542.07 | 1696344792.0
 2022-01-16 00:00:00 |        5253 |  15750451.0 |  72037082.2 | 159513733.4 | 480372059.24 | 1594793766.0
 2022-01-17 00:00:00 |        5309 |  15394513.0 |  68881393.2 | 160254700.0 | 493372245.84 | 1521758640.0
 2022-01-18 00:00:00 |        8092 |  15575286.5 |  68485955.4 | 154559572.5 | 463552685.39 | 1542783444.0
 2022-01-19 00:00:00 |        5860 |  16648747.0 |  72470482.6 | 166485138.2 | 492038228.67 | 1693483241.0
 2022-01-20 00:00:00 |        1751 |  15422072.0 |  69686381.0 | 162315385.0 | 497066615.00 | 1439319739.0
 2022-02-09 00:00:00 |          13 |   6382812.0 |  17616161.6 |  21197988.4 |  23021343.84 |   23168439.0

次のクエリは、クエリタイプの分散を表示しています。

SELECT query_type,
       COUNT(*) AS query_count
FROM sys_query_history
GROUP BY query_type
ORDER BY query_count DESC;

サンプル出力。

 query_type | query_count
------------+-------------
 UTILITY    |      134486
 SELECT     |       38537
 DDL        |        4832
 OTHER      |         768
 LOAD       |         768
 CTAS       |         748
 COMMAND    |          92