SVV_QUERY_STATE - Amazon Redshift

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

SVV_QUERY_STATE

使用 SVV_QUERY_STATE 來檢視目前執行中查詢之執行期的相關資訊。

SVV_QUERY_STATE 檢視包含 STV_EXEC_STATE 資料表的資料子集。

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

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

注意

只有在查詢已佈建的叢集時,才能使用此檢視。

資料表欄

欄名稱 資料類型 描述
userid integer 產生項目之使用者的 ID。
query integer 查詢 ID。可用於聯結其他系統資料表與檢視。
seg integer 正在執行中的查詢區段數。查詢包含多個區段,每個區段包含一或多個步驟。查詢區段可平行執行。每個區段皆在單一程序中執行。
step integer 正在執行中的查詢步驟數。步驟是查詢執行期的最小單位。每個步驟表示分散的工作單位,例如掃描資料表、傳回結果或排序資料。
maxtime 間隔 此步驟執行的時間量上限 (微秒)。
avgtime 間隔 此步驟執行的平均時間 (微秒)。
rows bigint 執行中步驟產生的列數。
bytes bigint 執行中步驟產生的位元組數。
cpu bigint 供內部使用。
memory bigint 供內部使用。
rate_row double precision 自查詢開始以來的 R ows-per-second 比率,計算方式是將資料列加總,並除以從查詢開始到目前時間的秒數。
rate_byte double precision 自查詢啟動以來的 B ytes-per-second 速率,計算方式是將位元組加總,除以從查詢開始到目前時間的秒數。
label character(25) 查詢標籤:步驟的名稱,例如 scansort
is_diskbased character(1) 此查詢步驟是否以磁碟型操作方式執行:true (t) 或 false (f)。只有特定步驟會進入磁碟,例如雜湊、排序及彙總步驟。許多步驟類型一律在記憶體中執行。
workmem bigint 已指派給查詢步驟之運作中記憶體數 (位元組)。
num_parts integer 雜湊資料表在雜湊步驟期間已分割的分割區數。此欄中的正數並不表示雜湊步驟以磁碟式操作方式執行。檢查 IS_DISKBASED 欄位中的值,查看該雜湊步驟是否為磁碟型。
is_rrscan character(1) 若為 true (t),表示已在步驟上使用範圍限制掃描。預設為 false (f)。
is_delayed_scan character(1) 若為 true (t),表示已在該步驟上使用延遲的掃描。預設為 false (f)。

範例查詢

依步驟判斷查詢處理時間

下列查詢顯示查詢 ID 為 279 之查詢的每個步驟執行多久,以及 Amazon Redshift 處理的列多寡:

select query, seg, step, maxtime, avgtime, rows, label from svv_query_state where query = 279 order by query, seg, step;

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

query | seg | step | maxtime | avgtime | rows | label ------+---------+------+---------+---------+---------+------------------- 279 | 3 | 0 | 1658054 | 1645711 | 1405360 | scan 279 | 3 | 1 | 1658072 | 1645809 | 0 | project 279 | 3 | 2 | 1658074 | 1645812 | 1405434 | insert 279 | 3 | 3 | 1658080 | 1645816 | 1405437 | distribute 279 | 4 | 0 | 1677443 | 1666189 | 1268431 | scan 279 | 4 | 1 | 1677446 | 1666192 | 1268434 | insert 279 | 4 | 2 | 1677451 | 1666195 | 0 | aggr (7 rows)

判斷磁碟上是否有任何正在執行的作用中查詢

以下查詢顯示作用中的查詢目前是否正在磁碟上執行:

select query, label, is_diskbased from svv_query_state where is_diskbased = 't';

此範例輸出顯示作用中的查詢目前是否正在磁碟上執行:

query | label | is_diskbased -------+--------------+-------------- 1025 | hash tbl=142 | t (1 row)