本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
STL_QUERY_METRICS
對於在使用者定義的查詢佇列 (服務類別) 中執行的查詢,包含指標資訊,例如處理的列數、CPU用量、輸入/輸出和磁碟使用量。若要檢視目前執行中之作用中查詢的指標,請參閱 STV_QUERY_METRICS 系統檢視。
查詢指標每間隔一秒鐘取樣一次。因此,相同查詢的不同執行可能會傳回稍微不同的時間。另外,可能不會記錄執行時間不到一秒的查詢區段。
STL_QUERY_METRICS 在查詢、區段和步驟層級追蹤和彙總指標。如需查詢區段和步驟的相關資訊,請參閱查詢計劃和執行工作流程。許多指標 (例如 max_rows
、cpu_time
等等) 是跨節點配量加總的。如需節點配量的相關資訊,請參閱資料倉儲系統架構。
若要判斷資料列報告指標的層級,請檢查 segment
和 step_type
資料欄。
-
如果
segment
和step_type
皆為-1
,則資料列報告查詢層級的指標。 -
如果
segment
不是-1
,且step_type
是-1
,則資料列報告區段層級的指標。 -
如果
segment
和step_type
皆不是-1
,則資料列報告步驟層級的指標。
SVL_QUERY_METRICS 檢視和 SVL_QUERY_METRICS_SUMMARY 檢視彙總此檢視中的資料,並以更易存取的形式呈現資訊。
STL所有使用者都可看見 _QUERY_METRICS。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱系統資料表和檢視中資料的可見性。
此表格中的部分或全部資料也可以在SYS監控檢視 中找到SYS_QUERY_DETAIL。SYS 監控檢視中的資料已格式化,以便於使用和理解。建議您針對查詢使用SYS監控檢視。
資料表欄
欄名稱 | 資料類型 | 描述 |
---|---|---|
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 | 查詢的優先順序。可能的值為 -1 、0 、1 、2 、3 和 4 ,其中 -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 秒且已使用不到 10 秒CPU的作用中查詢,請執行下列查詢。
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