SVCS_QUERY_SUMMARY - Amazon Redshift

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

SVCS_QUERY_SUMMARY

使用 SVCS _ QUERY _ SUMMARY 檢視來尋找有關執行查詢的一般資訊。

請注意,SVCSQUERY_ 中的資訊SUMMARY是從所有節點彙總的。

注意

SVCS_ QUERY _ SUMMARY 檢視僅包含 Amazon Redshift 完成的查詢相關資訊,而不包含其他公用程式和DDL命令。如需 Amazon Redshift 完成的所有陳述式 (包括和公用程式命令) 的完整清單DDL和資訊,您可以查詢 SVL _ STATEMENTTEXT 檢視。

具有前置詞的系統檢視SVCS提供有關主要和並行縮放叢集的查詢詳細資訊。這些檢視與具有前置詞的檢視類似,不同SVL之處在於SVL檢視僅針對在主叢集上執行的查詢提供資訊。

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

此表格中的部分或全部資料也可以在SYS監視檢視中找到SYS_QUERY_DETAIL。SYS監視檢視中的資料格式化為更易於使用和理解。我們建議您使用SYS監視視圖進行查詢。

如需 SVL _ QUERY _ 的資訊SUMMARY,請參閱SVL_QUERY_SUMMARY

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目之使用者的 ID。
query integer 查詢 ID。可用於聯結其他系統資料表與檢視。
stm integer 串流:查詢的並行區段集。一個查詢擁有一或多個串流。
seg integer 區段號碼。查詢包含多個區段,每個區段包含一或多個步驟。查詢區段可平行執行。每個區段皆在單一程序中執行。
step integer 執行的查詢步驟。
maxtime bigint 此步驟執行的時間量上限 (微秒)。
avgtime bigint 此步驟執行的平均時間 (微秒)。
rows bigint 查詢步驟中包含的資料列數。
bytes bigint 查詢步驟中包含的資料位元組數。
rate_row double precision 每資料列的查詢執行率。
rate_byte double precision 每位元組的查詢執行率。
label text 步驟標籤,包含查詢步驟名稱與資料表 ID 及資料表名稱 (如適用) (例如 scan tbl=100448 name =user)。三位數表IDs通常指的是瞬態表的掃描。當您看見 tbl=0 時,通常是指常數值的掃描。
is_diskbased character(1) 此查詢步驟在叢集的任何節點上是否以磁碟型操作方式執行:true (t) 或 false (f)。只有特定步驟會進入磁碟,例如雜湊、排序及彙總步驟。許多步驟類型一律在記憶體中執行。
workmem bigint 已指派給查詢步驟之運作中記憶體數 (位元組)。
is_rrscan character(1) 若為 true (t),表示已在步驟上使用範圍限制掃描。預設為 false (f)。
is_delayed_scan character(1) 若為 true (t),表示已在該步驟上使用延遲的掃描。預設為 false (f)。
rows_pre_filter bigint 對於永久資料表的掃描,指的是在篩選標記進行刪除的資料列 (幽靈資料列) 之前已發出的資料列總數。

範例查詢

檢視查詢步驟的處理資訊

下列查詢顯示查詢 87 每個步驟的基本處理資訊:

select query, stm, seg, step, rows, bytes from svcs_query_summary where query = 87 order by query, seg, step;

此查詢會擷取查詢 87 的相關處理資訊,如下範例輸出所示:

query | stm | seg | step | rows | bytes -------+-----+-----+------+--------+--------- 87 | 0 | 0 | 0 | 90 | 1890 87 | 0 | 0 | 2 | 90 | 360 87 | 0 | 1 | 0 | 90 | 360 87 | 0 | 1 | 2 | 90 | 1440 87 | 1 | 2 | 0 | 210494 | 4209880 87 | 1 | 2 | 3 | 89500 | 0 87 | 1 | 2 | 6 | 4 | 96 87 | 2 | 3 | 0 | 4 | 96 87 | 2 | 3 | 1 | 4 | 96 87 | 2 | 4 | 0 | 4 | 96 87 | 2 | 4 | 1 | 1 | 24 87 | 3 | 5 | 0 | 1 | 24 87 | 3 | 5 | 4 | 0 | 0 (13 rows)

判斷查詢步驟是否溢出至磁碟

下列查詢顯示查詢 ID 為 1025 的任何查詢步驟 (請參閱 SVL_QLOG 檢視來了解如何取得查詢的查詢 ID) 是否溢出至磁碟或查詢完全在記憶體內執行:

select query, step, rows, workmem, label, is_diskbased from svcs_query_summary where query = 1025 order by workmem desc;

此查詢傳回下列範例輸出:

query| step| rows | workmem | label | is_diskbased -----+-----+--------+-----------+---------------+-------------- 1025 | 0 |16000000| 141557760 |scan tbl=9 | f 1025 | 2 |16000000| 135266304 |hash tbl=142 | t 1025 | 0 |16000000| 128974848 |scan tbl=116536| f 1025 | 2 |16000000| 122683392 |dist | f (4 rows)

通過掃描 IS_ 的值DISKBASED,您可以查看哪些查詢步驟進入磁盤。針對查詢 1025,雜湊步驟在磁碟上執行。步驟可能在包含雜湊、彙總或排序步驟的磁碟上執行。若只要檢視以磁碟為基礎的查詢步驟,請將and is_diskbased = 't'子句加入上述範例中的SQL陳述式。