ablog

不器用で落着きのない技術者のメモ

Redshift のシステムテーブルビューの種類

STL STV SVL SVV SYS
タイプ テーブル テーブル ビュー ビュー ビュー
生成方法 ディスク上のログ オンメモリーデータ STLへの参照 STVへの参照 -
用途 過去の実行記録の参照 現在進行中の処理の参照 STL/STVデータを組み合わせて別軸で分析 同左 -
記録タイミング 実行直後* - 実行中 - -
保持期間 7日間 - 7日間 - 7日間
  • * 検証結果より、ただし実行時間が短いと記録されないこともある

参考

STL システムビューは 7 日間のログ履歴を保持します。ログの保持は、すべてのクラスターサイズとノードタイプで保証されており、クラスターワークロードの変化による影響を受けません。また、ログの保持は、クラスターの一時停止などのクラスターの状態からも影響を受けません。クラスターが新しい場合のみ、ログ履歴が 7 日未満になります。ログを保持するために必要なアクションはありませんが、7 日以上前のログデータを保持するには、ログを定期的に他のテーブルにコピーするか、Amazon S3 にアンロードする必要があります。

ログ記録のための STL ビュー - Amazon Redshift
  • Redshift に存在するユーザー作成でないスキーマ一覧。
dev=# select nspname from pg_namespace where nspowner = 1;
      nspname
--------------------
 pg_toast
 pg_internal
 pg_automv
 pg_temp_1
 pg_catalog
 information_schema
 catalog_history
 public
 pg_temp_7
 pg_temp_8
 pg_temp_9
 pg_temp_5
 pg_temp_6
 pg_temp_11
 pg_auto_copy
 pg_s3
 pg_mv
(17 rows)
dev=# select distinct(split_part(tablename,'_',1)) from  pg_tables where schemaname = 'pg_catalog';
 split_part
------------
 padb
 pg
 stcs
 stll
 stv
 systable
(6 rows)
dev=# select distinct(split_part(viewname,'_',1)) from  pg_views where schemaname = 'pg_catalog';
 split_part
------------
 pg
 stl
 svcs
 svl
 svv
 sys
(6 rows)
  • STL/SVL には実行直後に記録されるが、実行時間が短いクエリは記録されない。
$ psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439"
psql (13.7, server 8.0.2)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

dev=# \pset pager
Pager usage is off.
dev=# select version();
                                                          version
---------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.73348
(1 row)

dev=# set enable_result_cache_for_session=off;
SET
dev=#  \timing on
Timing is on.
dev=# select count(*) from lineorder;
   count
------------
 1200075804
(1 row)

Time: 31.825 ms
dev=# select pg_last_query_id();
 pg_last_query_id
------------------
         33268129 
(1 row)

Time: 3.663 ms ★クエリの実行時間は約3.6ミリ秒
dev=# \gset
Time: 3.583 ms
dev=# select userid,query,query_execution_time,query_blocks_read from svl_query_metrics_summary where query = :pg_last_query_id;
 userid | query | query_execution_time | query_blocks_read
--------+-------+----------------------+-------------------
(0 rows) ★記録されていない

Time: 243.333 ms
dev=# select count(distinct(lo_orderkey)) from lineorder;
   count
-----------
 150000000
(1 row)

Time: 11748.946 ms (00:11.749)
dev=# select pg_last_query_id();
 pg_last_query_id
------------------
         33268148
(1 row)

Time: 3.521 ms ★クエリの実行時間は3.5秒
dev=# \gset
Time: 3.580 ms
dev=# select userid,query,query_execution_time,query_blocks_read from svl_query_metrics_summary where query = :pg_last_query_id;
 userid |  query   | query_execution_time | query_blocks_read
--------+----------+----------------------+-------------------
    100 | 33268148 |                   12 |              4269
(1 row) ★記録されている

Time: 230.942 ms