

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# WLM 查詢佇列跳轉
<a name="wlm-queue-hopping"></a>

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

查詢可能因為 [WLM 逾時](cm-c-defining-query-queues.md#wlm-timeout)或[查詢監控規則 (QMR) 跳轉動作](cm-c-wlm-query-monitoring-rules.md#cm-c-wlm-defining-query-monitoring-rules)而跳轉。您只能在手動 WLM 配置中跳轉查詢。

當查詢跳轉時，WLM 會嘗試根據 [WLM 佇列指派規則](cm-c-wlm-queue-assignment-rules.md)，將查詢路由至下一個相符的佇列。如果查詢不符合其他任何佇列定義，則會取消此查詢。不會指派給預設佇列。

## WLM 逾時動作
<a name="wlm-queue-hopping-summary"></a>

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


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

## WLM 逾時佇列跳轉
<a name="wlm-timeout-queue-hopping"></a>

WLM 會跳轉下列類型的查詢 (如果逾時)：
+ WLM 狀態為 `running` 的唯讀查詢，例如 SELECT 陳述式。若要尋找查詢的 WLM 狀態，請檢視 [STV\_WLM\_QUERY\_STATE](r_STV_WLM_QUERY_STATE.md) 系統資料表的 STATE 欄。
+ CREATE TABLE AS (CTAS) 陳述式。WLM 佇列跳轉同時支援使用者定義和系統產生的 CTAS 陳述式。
+ SELECT INTO 陳述式。

不受制於 WLM 逾時的查詢會繼續在原始佇列中執行，直到完成。下列類型的查詢不受制於 WLM 逾時：
+ COPY 陳述式
+ 維護操作，例如 ALTER、ANALYZE 和 VACUUM
+ WLM 狀態已達到 `returning` 的唯讀查詢，例如 SELECT 陳述式。若要尋找查詢的 WLM 狀態，請檢視 [STV\_WLM\_QUERY\_STATE](r_STV_WLM_QUERY_STATE.md) 系統資料表的 STATE 欄。

不符合因 WLM 逾時而跳轉之資格的查詢，一旦逾時就會取消。下列類型的查詢不符合因 WLM 逾時而跳轉的資格：
+ INSERT、UPDATE 和 DELETE 陳述式
+ UNLOAD 陳述式
+ 使用者定義的函數 (UDF)

## WLM 逾時重新指派和重新啟動的查詢
<a name="wlm-timeout-reassigned-and-restarted-queries"></a>

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

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

只有在下列所有條件成立時，才會重新指派查詢：
+ 找到相符的查詢。
+ 新佇列有足夠可用的槽可執行查詢。如果 [wlm\_query\_slot\_count](r_wlm_query_slot_count.md) 參數設定的值大於 1，查詢可能需要多個槽。
+ 新佇列可用的記憶體至少與查詢目前使用的記憶體一樣多。

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

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

## QMR 跳轉動作
<a name="qmr-hop-action-queue-hopping"></a>

下表摘要說明不同類型的查詢因為 QMR 跳轉動作的行為。


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

若要查明由 QMR 跳轉的查詢是否已重新指派、重新啟動或取消，請查詢 [STL\_WLM\_RULE\_ACTION](r_STL_WLM_RULE_ACTION.md) 系統日誌資料表。

## QMR 跳轉動作重新指派和重新啟動的查詢
<a name="qmr-hop-action-reassigned-and-restarted-queries"></a>

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

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

只有在下列所有條件成立時，才會重新指派查詢：
+ 找到相符的查詢。
+ 新佇列有足夠可用的槽可執行查詢。如果 [wlm\_query\_slot\_count](r_wlm_query_slot_count.md) 參數設定的值大於 1，查詢可能需要多個槽。
+ 新佇列可用的記憶體至少與查詢目前使用的記憶體一樣多。

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

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