本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 陳述式。