STL_QUERY_METRICS - Amazon Redshift

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

STL_QUERY_METRICS

包含已在使用者定義的查詢佇列 (服務類別) 中完成執行之查詢的指標資訊,例如已處理的資料列數目、CPU 用量、輸入/輸出和磁碟使用情形。若要查看目前執行所在的活動查詢的指標,請參閲STV_QUERY_METRICS系統檢視。

查詢指標每間隔一秒鐘取樣一次。因此,相同查詢的不同執行可能會傳回稍微不同的時間。另外,可能不會記錄執行時間不到一秒的查詢區段。

STL_QUERY_METRICS 會追蹤並彙總查詢、區段和步驟層級的指標。如需查詢區段和步驟的相關資訊,請參閱查詢計劃和執行工作流程。許多指標 (例如 max_rowscpu_time 等等) 是跨節點配量加總的。如需節點配量的詳細資訊,請參閱資料倉儲系統架構

若要判斷資料列報告指標的層級,請檢查 segmentstep_type 資料欄。

  • 如果 segmentstep_type 皆為 -1,則資料列報告查詢層級的指標。

  • 如果 segment 不是 -1,且 step_type-1,則資料列報告區段層級的指標。

  • 如果 segmentstep_type 皆不是 -1,則資料列報告步驟層級的指標。

所以此SVL_QUERY_METRICS檢視和SVL_QUERY_METRICS_SUMMARY檢視彙總此檢視中的資料,並以更易存取的形式呈現資訊。

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

資料表欄位

資料欄名稱 資料類型 描述
userid integer 執行產生此項目之查詢的使用者 ID。
service_class integer 服務類別的 ID。查詢佇列定義於 WLM 組態。只會回報使用者定義之佇列的指標。
query integer 查詢 ID。查詢欄可用於加入其他系統表格與檢視。
segment integer 區段號碼。查詢包含多個區段,每個區段包含一或多個步驟。查詢區段可平行執行。每個區段皆在單一程序中執行。如果區段值為 -1,指標區段值將累計至查詢層級。
step_type integer 執行的步驟類型。如需步驟類型的說明,請參閱步驟類型
starttime timestamp 查詢開始執行的 UTC 時間,精確度為 6 位數的小數秒。例如:2009-06-12 11:29:19.131358
slices integer 叢集的分割數量。
max_rows bigint 為步驟匯出的最大資料列數 (彙總所有分割)。
rows bigint 步驟處理的資料列數。
max_cpu_time bigint 已使用的最大 CPU 時間,以微秒為單位。在區段層級,區段中所有分割已使用的最大 CPU 時間。在查詢層級,任何查詢區段已使用的最大 CPU 時間。
cpu_time bigint 已使用的 CPU 時間,以微秒為單位。在區段層級,所有分割的區段所使用的 CPU 總時間。在查詢層級,所有分割與區段的查詢 CPU 時間總和。
max_blocks_read bigint 區段讀取的 1 MB 區塊最大數量 (彙總所有分割)。在區段層級,所有分割的區段所讀取的 1 MB 區塊最大數量。在查詢層級,任何查詢區段所讀取的 1 MB 區塊最大數量。
blocks_read bigint 查詢或區段所讀取的 1 MB 區塊數。
max_run_time bigint 區段的最大經過時間 (以微秒為單位)。在區段層級,所有分割之區段的最大執行時間。在查詢層級,任何查詢區段的最大執行時間。
run_time bigint

所有分割合計的總執行時間。執行時間不包含等待時間。

在區段層級,所有分割合計的區段執行時間。在查詢層級,所有分割與區段的查詢執行時間總和。因為此值為總和,因此執行時間與查詢執行時間無關。

max_blocks_to_disk bigint 用來寫入中繼結果之磁碟空間的數量上限,以 MB 區塊表示。在區段層級,所有分割之區段已使用的最大磁碟空間量。在查詢層級,任何查詢區段已使用的最大磁碟空間量。
blocks_to_disk bigint 查詢或區段用來寫入中繼結果之磁碟空間的數量上限,以 MB 區塊表示。
step integer 執行的查詢步驟。
max_query_scan_size bigint 查詢所掃描的最大資料大小,以 MB 為單位。在區段層級,所有分割之區段所掃描的最大資料大小。在查詢層級,任何查詢區段所掃描的最大資料大小。
query_scan_size bigint 查詢所掃描的資料大小,以 MB 為單位。
query_priority integer 查詢的優先順序。可能的值為 -101234,其中 -1 表示不支援查詢優先順序。
query_queue_time bigint 查詢排入佇列的時間 (毫秒)。
service_class_name character(64) 服務類別的名稱。

範例查詢

若要找出具有高 CPU 時間 (超過 1,000 秒) 的查詢,請執行下列查詢。

Select query, cpu_time / 1000000 as cpu_seconds from stl_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

若要找出具有傳回超過一百萬個資料列之巢狀迴圈聯結的使用中查詢,請執行下列查詢。

select query, rows from stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702

若要找出已執行超過 60 秒,但已使用 CPU 時間少於 10 秒的使用中查詢,請執行下列查詢。

select query, run_time/1000000 as run_time_seconds from stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114