STL_SCAN - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

STL_SCAN

分析查詢的資料表掃描步驟。此資料表中資料列的步驟號碼一律為 0,因為掃描是區段中的第一個步驟。

所有使用者都可看見 STL_SCAN。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱 系統資料表和檢視中資料的可見性

注意

STL_SCAN 僅包含在主叢集上執行的查詢。但不包含在並行擴縮叢集上執行的查詢。若要存取在主要和並行擴縮叢集上執行的查詢,建議您使用 SYS 監視檢視 SYS_QUERY_DETAIL。SYS 監視檢視中的資料會格式化為更易於使用和理解。

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目的使用者之 ID。
query integer 查詢 ID。查詢欄可用於加入其他系統表格與檢視。
分割 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) 此資訊僅供內部使用。
scanned_mega_value character(1) 此資訊僅供內部使用。此資訊顯示指定的掃描步驟是否掃描了較大的值。大值將儲存在多個區塊中。區塊大小預設為 1 MB,在預設設定中,大值大於 1 MB。

掃描類型

類型 ID 描述
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 串流讀取資料。

使用須知

在理想情況下,rows 應該相當接近 rows_pre_filterrowsrows_pre_filter 之間的差異若很大,表示執行引擎正在掃描稍後將捨棄的資料列,這樣做缺乏效率。rows_pre_filterrows_pre_user_filter 之間的差異是掃描中幽靈資料列的數目。執行 VACUUM 以移除標記進行刪除的資料。rowsrows_pre_user_filter 之間的差異是查詢所篩選的資料列數目。若有許多資料列已遭使用者篩選條件捨棄,請檢閱您選擇的排序資料欄,或若這是由於大型未排序區域所致,請執行清空。

範例查詢

下列範例顯示 rows_pre_filter 大於 rows_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)