WLM查詢佇列跳轉 - Amazon Redshift

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

WLM查詢佇列跳轉

由於WLM逾時或查詢監視規則 (QMR) 躍點動作,可能會跳躍查詢。您只能在手動WLM設定中進行躍點查詢。

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

WLM逾時動作

下表摘要列出具有WLM逾時之不同類型查詢的行為。

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

WLM超時佇列跳轉

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

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

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

  • SELECTINTO陳述。

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

  • COPY陳述

  • 維護操作,例如ANALYZE和 VACUUM

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

在逾時時間內不符合跳躍資格的查詢會在WLM逾時時予以取消。以下類型的查詢不符合WLM逾時跳轉的資格:

  • INSERTUPDATE、和DELETE陳述式

  • UNLOAD陳述

  • 使用者定義函數 (UDFs)

WLM超時重新分配和重新啟動查詢

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

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

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

  • 找到相符的查詢。

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

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

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

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

QMR躍點動作

下表摘要列出具有QMR躍點動作之不同類型查詢的行為。

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

若要瞭解跳過QMR的查詢是否已重新指派、重新啟動或取消,請查詢STL_WLM_RULE_ACTION系統記錄資料表。

QMR躍點動作重新指派並重新啟動查詢

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

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

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

  • 找到相符的查詢。

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

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

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

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