STL_SCAN - Amazon Redshift

STL_SCAN

テーブルをスキャンするステップをクエリについて分析します。スキャンは 1 つのセグメント内で最初のステップなので、このテーブルに含まれる行のステップ番号は常に 0 です。

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

テーブルの列

列名 データ型 説明
userid integer エントリを生成したユーザーの ID。
query integer クエリ ID。クエリ列は、他の各種システムテーブルおよびビューを結合するために使用できます。
slice integer クエリが実行されていたスライスを識別する番号。
segment integer クエリセグメントを識別する番号。
step integer 実行されたクエリステップ。
starttime timestamp UTC で表されたクエリの開始時間。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358
endtime timestamp クエリの実行が完了した時刻 (UTC)。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358
tasknum integer ステップ実行に割り当てられたクエリタスク処理の数。
rows bigint 処理された合計行数。
バイト bigint ステップのすべての出力行のサイズ (バイト単位)。
fetches bigint この情報は、内部使用に限定されています。
type integer スキャンタイプの ID。有効な値のリストについては、次の表を参照してください。
tbl integer テーブル ID。
is_rrscan character(1) true (t) の場合は、ステップで範囲限定スキャンが使用されたことを示します。
is_delayed_scan character(1) この情報は、内部使用に限定されています。
rows_pre_filter bigint 永続テーブルのスキャンの場合は、削除対象としてマークされた行 (非実体の行) をフィルタリングする前でユーザー定義のクエリフィルタが適用される前に出力された合計行数。
rows_pre_user_filter bigint 永続テーブルのスキャンの場合は、削除対象としてマークされた行 (非実体の行) をフィルタリングした後でユーザー定義のクエリフィルタが適用される前に処理された行数。
perm_table_name character(136) 永続テーブルのスキャンの場合は、スキャンされたテーブルの名前。
is_rlf_scan character(1) true (t) の場合は、ステップで低レベルフィルタリングが使用されたことを示します。
is_rlf_scan_reason integer この情報は、内部使用に限定されています。
num_em_blocks integer この情報は、内部使用に限定されています。
checksum bigint この情報は、内部使用に限定されています。
runtime_filtering character(1) true(t) の場合、ランタイムフィルタが適用されていることを示します。
scan_region integer この情報は、内部使用に限定されています。
num_sortkey_as_predicate integer この情報は、内部使用に限定されています。
row_fetcher_state integer この情報は、内部使用に限定されています。
consumed_scan_ranges bigint この情報は、内部使用に限定されています。
work_stealing_reason bigint この情報は、内部使用に限定されています。
is_vectorized_scan character(1) この情報は、内部使用に限定されています。
is_vectorized_scan_reason integer この情報は、内部使用に限定されています。
row_fetcher_reason bigint この情報は、内部使用に限定されています。
topology_signature bigint この情報は、内部使用に限定されています。
use_tpm_partition character(1) この情報は、内部使用に限定されています。
is_rrscan_expr character(1) この情報は、内部使用に限定されています。

スキャンタイプ

タイプ ID Description
1 ネットワークからのデータ。
2 圧縮された共有メモリ内のパーマネントユーザーテーブル。
3 行が認識される一時テーブル。
21 Amazon S3 からファイルをロードします。
22 Amazon DynamoDB からテーブルをロードします。
23 リモート SSH 接続からのロードデータ。
24 リモートクラスター (ソート済みリージョン) からのロードデータ。これは、サイズを変更するために使用されます。
25 リモートクラスター (未ソートリージョン) からのロードデータ。これは、サイズを変更するために使用されます。
28 複数のテーブルの UNION ALL を使用して時系列ビューからデータを読み取ります。
29 Amazon S3 外部テーブルからデータを読み取ります。
30 Amazon S3 外部テーブルのパーティション情報を読み取ります。
33 リモート Postgres テーブルからデータを読み取ります。
36 リモート MySQL テーブルからデータを読み取ります。
37 リモート Kinesis ストリームからデータを読み取ります。

使用に関する注意事項

rowsrows_pre_filter と相対的に近いことが理想的です。rowsrows_pre_filter の間に大きな差異がある場合は、後で破棄される行を実行エンジンがスキャンしていることが考えられ、非効率です。rows_pre_filterrows_pre_user_filter の差異は、スキャンに含まれる非実体行の数に相当します。削除対象としてマークされた行を削除するには、VACUUM を実行します。rowsrows_pre_user_filter の差異は、クエリによってフィルタリングされる行の数に相当します。多数の行がユーザーフィルタによって破棄される場合は、ソート列の選択を見直すか、未ソートリージョンが大きいことが原因である場合は、バキュームを実行します。

サンプルクエリ

次の例は、バキュームされていない行 (非実体行) がテーブルによって削除されたため、rows_pre_filterrows_pre_user_filter よりも大きいことを示しています。

SELECT query, slice, segment,step,rows, rows_pre_filter, rows_pre_user_filter from stl_scan where query = pg_last_query_id(); query | slice | segment | step | rows | rows_pre_filter | rows_pre_user_filter -------+--------+---------+------+-------+-----------------+---------------------- 42915 | 0 | 0 | 0 | 43159 | 86318 | 43159 42915 | 0 | 1 | 0 | 1 | 0 | 0 42915 | 1 | 0 | 0 | 43091 | 86182 | 43091 42915 | 1 | 1 | 0 | 1 | 0 | 0 42915 | 2 | 0 | 0 | 42778 | 85556 | 42778 42915 | 2 | 1 | 0 | 1 | 0 | 0 42915 | 3 | 0 | 0 | 43428 | 86856 | 43428 42915 | 3 | 1 | 0 | 1 | 0 | 0 42915 | 10000 | 2 | 0 | 4 | 0 | 0 (9 rows)