WLM 查詢佇列跳轉 - Amazon Redshift

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

WLM 查詢佇列跳轉

使用 Amazon Redshift,您可以透過啟用 WLM(工作負載管理) 查詢佇列跳轉來管理工作負載並行和資源配置。此功能允許查詢在資源可用時暫時從指派佇列「跳出」至較高優先順序佇列,從而改善整體查詢效能和系統使用率。下列各節提供在 Amazon Redshift 中設定和使用WLM查詢佇列跳轉的詳細指引。

由於WLM逾時或查詢監控規則 (QMR) 跳轉動作 ,可以跳轉查詢。您只能在手動WLM組態中跳轉查詢。

跳出查詢時, WLM會根據佇列WLM指派規則 嘗試將查詢路由至下一個相符的佇列。如果查詢不符合其他任何佇列定義,則會取消此查詢。不會指派給預設佇列。

WLM 逾時動作

下表摘要說明具有WLM逾時的不同類型查詢的行為。

查詢類型 動作
INSERT、 UPDATE和 DELETE 取消
使用者定義的函數 (UDFs) 取消
UNLOAD 取消
COPY 繼續執行
維護操作 繼續執行
處於 returning 狀態的唯讀查詢 繼續執行
處於 running 狀態的唯讀查詢 重新指派或重新啟動
CREATE TABLE AS (CTAS)、 SELECT INTO 重新指派或重新啟動

WLM 逾時佇列跳轉

WLM 逾時時跳出下列類型的查詢:

  • 處於 WLM 狀態的唯讀查詢,例如 SELECT陳述式running。若要尋找查詢WLM的狀態,請檢視STV_WLM_QUERY_STATE系統資料表上的資料STATE欄。

  • CREATE TABLE AS (CTAS) 陳述式。WLM 佇列跳轉支援使用者定義和系統產生的CTAS陳述式。

  • SELECT INTO 陳述式。

不受WLM逾時限制的查詢會繼續在原始佇列中執行,直到完成為止。下列類型的查詢不會WLM逾時:

  • COPY 陳述式

  • 維護操作,例如 ANALYZE和 VACUUM

  • 已達 WLM 狀態的唯讀查詢,例如 SELECT陳述式returning。若要尋找查詢WLM的狀態,請檢視STV_WLM_QUERY_STATE系統資料表上的資料STATE欄。

不符合WLM逾時跳轉資格的查詢會在逾時時取消。下列類型的查詢不符合WLM逾時跳轉的資格:

  • INSERT、 UPDATE和 DELETE陳述式

  • UNLOAD 陳述式

  • 使用者定義的函數 (UDFs)

WLM 重新指派和重新啟動的逾時查詢

當查詢跳轉且找不到相符的佇列時,就會取消此查詢。

跳出查詢並找到相符佇列時, 會WLM嘗試將查詢重新指派給新的佇列。如果無法重新指派查詢,則會在新佇列中重新啟動此查詢,如下所述。

只有在下列所有條件成立時,才會重新指派查詢:

  • 找到相符的查詢。

  • 新佇列有足夠可用的槽可執行查詢。如果 wlm_query_slot_count 參數設定的值大於 1,查詢可能需要多個槽。

  • 新佇列可用的記憶體至少與查詢目前使用的記憶體一樣多。

如果重新指派查詢,此查詢會在新佇列中繼續執行。中間結果會保留下來,因此對於總執行時間影響極小。

如果無法重新指派查詢,則會取消查詢,並於新佇列中重新啟動查詢。將會刪除中間結果。查詢會在佇列中等待,然後在有足夠的槽可用時開始執行。

QMR 躍點動作

下表總結了具有QMR躍點動作的不同類型查詢的行為。

查詢類型 動作
COPY 繼續執行
維護操作 繼續執行
使用者定義的函數 (UDFs) 繼續執行
UNLOAD 重新指派或繼續執行
INSERT、 UPDATE和 DELETE 重新指派或繼續執行
處於 returning 狀態的唯讀查詢 重新指派或繼續執行
處於 running 狀態的唯讀查詢 重新指派或重新啟動
CREATE TABLE AS (CTAS)、 SELECT INTO 重新指派或重新啟動

若要尋找 所跳出的查詢QMR是否已重新指派、重新啟動或取消,請查詢STL_WLM_RULE_ACTION系統日誌表。

QMR 躍點動作已重新指派和重新啟動的查詢

當查詢跳轉且找不到相符的佇列時,就會取消此查詢。

跳出查詢並找到相符佇列時, 會WLM嘗試將查詢重新指派給新的佇列。如果無法重新指派查詢,此查詢會在新佇列中重新啟動,或在原始佇列中繼續執行,如下所述。

只有在下列所有條件成立時,才會重新指派查詢:

  • 找到相符的查詢。

  • 新佇列有足夠可用的槽可執行查詢。如果 wlm_query_slot_count 參數設定的值大於 1,查詢可能需要多個槽。

  • 新佇列可用的記憶體至少與查詢目前使用的記憶體一樣多。

如果重新指派查詢,此查詢會在新佇列中繼續執行。中間結果會保留下來,因此對於總執行時間影響極小。

如果無法重新指派查詢,此查詢會重新啟動或在原始佇列中繼續執行。如果重新啟動查詢,則會取消查詢,並於新佇列中重新啟動查詢。將會刪除中間結果。查詢會在佇列中等待,然後在有足夠的槽可用時開始執行。