SVL_QUERY_SUMMARY - Amazon Redshift

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

SVL_QUERY_SUMMARY

使用 SVL_QUERY_SUMMARY 檢視來尋找查詢執行的一般相關資訊。

SVL_QUERY_SUMMARY 檢視包含 SVL_QUERY_REPORT 檢視的資料子集。請留意,會從所有節點彙總 SVL_QUERY_SUMMARY 中的資訊。

注意

SVL_QUERY_SUMMARY 檢視僅包含 Amazon Redshift 執行之查詢的相關資訊,不包含其他公用程式和 DDL 命令的相關資訊。如需 Amazon Redshift 所完成全部陳述式的完整清單和相關資訊 (包含 DDL 和公用程式命令),則可查詢 SVL_STATEMENTTEXT 檢視。

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

此資料表中的部份或所有資料也會在 SYS 監控檢視 SYS_QUERY_DETAIL 中找到。SYS 監視檢視中的資料會格式化為更易於使用和理解。我們建議您使用 SYS 監控檢視進行查詢。

如需 SVCS_QUERY_SUMMARY 的相關資訊,請參閱 SVCS_QUERY_SUMMARY

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目之使用者的 ID。
query integer 查詢 ID。可用於聯結其他系統資料表與檢視。
stm integer 串流:查詢的並行區段集。一個查詢擁有一或多個串流。
seg integer 區段號碼。查詢包含多個區段,每個區段包含一或多個步驟。查詢區段可平行執行。每個區段皆在單一程序中執行。
step integer 執行的查詢步驟。
maxtime bigint 此步驟執行的時間量上限 (微秒)。
avgtime bigint 此步驟執行的平均時間 (微秒)。
rows bigint 查詢步驟中包含的資料列數。
位元組 bigint 查詢步驟中包含的資料位元組數。
rate_row double precision 每資料列的查詢執行率。
rate_byte double precision 每位元組的查詢執行率。
label text 步驟標籤,包含查詢步驟名稱與資料表 ID 及資料表名稱 (如適用) (例如 scan tbl=100448 name =user)。三位數資料表 ID 通常是指暫時性資料表的掃描。當您看見 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 svl_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 svl_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 陳述式。