

 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="cm-c-wlm-query-monitoring-rules"></a>

在 Amazon Redshift 工作負載管理 (WLM) 中，查詢監控規則會為 WLM 佇列定義以指標為基礎的效能邊界，並指定當查詢超出這些邊界時要採取的動作。例如，對於短期執行查詢專用的佇列，您可以建立規則，以將執行時間超過 60 秒的查詢取消。若要追蹤設計不良的查詢，您可以使用另一個規則來記錄含有巢狀迴圈的查詢。

請將查詢監控規則定義為工作負載管理 (WLM) 組態的一部分。每一個佇列最多可以定義 25 個規則，而全部佇列合計以 25 個規則為限制。每個規則最多包含三個條件 (或述詞) 和一個動作。*述詞*由指標、比較條件 (=、< 或 > ) 和值所組成。如果符合任何規則的所有述詞，就會觸發該規則的動作。可能的規則動作包括記錄、跳轉和中止，如下所述。

給定佇列中的規則僅套用至該佇列中執行的查詢。各規則彼此無關。

WLM 每 10 秒評估一次指標。Amazon Redshift 會在自動重寫查詢時，於子查詢層級套用查詢監控規則。如果在相同期間觸發了多項規則，WLM 會選擇動作的嚴重性最高的規則。如果有兩項規則的動作具有相同嚴重性，WLM 會根據規則名稱的字母順序執行規則。如果動作是跳轉或中止，則會記錄動作，並從佇列中移出查詢。如果動作是記錄，則查詢會在佇列中繼續執行。WLM 會依每個規則，對每個查詢只啟動一個記錄動作。如果佇列包含其他規則，那些規則仍然有效。如果動作是跳轉，且將查詢路由至另一個佇列，則會套用新佇列的規則。如需針對特定查詢執行的查詢監控和追蹤動作的相關資訊，請參閱 [短期查詢加速](wlm-short-query-acceleration.md) 中的範例集合。

當符合規則的所有述詞時，WLM 會將一列寫入 [STL\$1WLM\$1RULE\$1ACTION](r_STL_WLM_RULE_ACTION.md) 系統資料表。此外，Amazon Redshift 會將目前執行中查詢的查詢指標記錄到 [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md)。已完成之查詢的指標儲存在 [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md) 中。

**注意**  
對於 Amazon Redshift Serverless，您可以使用 `wlm_json_configuration` 參數設定查詢佇列和監控規則。這可讓您建立具有不同使用者角色、查詢群組和監控規則的多個佇列。如需設定無伺服器查詢佇列的詳細資訊，請參閱《*Amazon Redshift 管理指南*》中的[設定查詢佇列](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-query-queues.html)。

## 定義查詢監控規則
<a name="cm-c-wlm-defining-query-monitoring-rules"></a>

您可以將查詢監控規則定義為 WLM 組態的一部分，而 WLM 組態是您在叢集的參數群組定義中定義。

您可以使用 AWS 管理主控台 或以程式設計方式使用 JSON 建立規則。

**注意**  
如果您選擇以程式設計方式建立規則，強烈建議您使用主控台來產生 JSON，再加入參數群組定義中。如需詳細資訊，請參閱《Amazon Redshift 管理指南》**中的[建立查詢監控規則](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html)和[使用 AWS CLI設定參數值](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html#configure-parameters-using-the-cli)。

若要定義查詢監控規則，請指定下列元素：
+ 規則名稱 – 規則名稱在 WLM 組態內必須是唯一的。規則名稱最多為 32 個英數字元或底線，且不可含有空格和問號。每個佇列最多可以有 25 個規則，而全部佇列合計最多 25 規則。
+ 一或多個述詞 – 每個規則最多可以有三個述詞。如果符合任何規則的所有述詞，就會觸發相關聯的動作。述詞由指標名稱、運算子 ( =、< 或 > ) 和值所定義。例如，`query_cpu_time > 100000`。如需指標清單及各種指標的範例值，請參閱本節後續的[已佈建 Amazon Redshift 的查詢監控指標](#cm-c-wlm-query-monitoring-metrics)。
+ 動作 – 如果觸發多個規則，WLM 會選擇具有最嚴重動作的規則。依嚴重性遞增順序，可能的動作如下：
  + 日誌 – 將查詢的相關資訊記錄在 STL\$1WLM\$1RULE\$1ACTION 系統資料表中。只需要寫入日誌記錄時，請使用「記錄」動作。WLM 依每個規則，對每個查詢最多只建立一個日誌。在記錄動作之後，其他規則仍然有效，且 WLM 會繼續監控查詢。
  + 跳轉 (僅適用於手動 WLM) – 記錄動作，並將查詢跳轉至下一個相符的佇列。如果沒有另一個相符的佇列，則會取消查詢。QMR 只會轉跳 [CREATE TABLE AS](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_AS.html) (CTAS) 陳述式和唯讀查詢，例如 SELECT 陳述式。如需詳細資訊，請參閱[WLM 查詢佇列跳轉](wlm-queue-hopping.md)。
  + 中止 – 記錄動作並終止查詢。QMR 不會停止 COPY 陳述式和維護操作，例如 ALTER ANALYZE 和 VACUUM。
  + 變更優先順序 (僅適用於自動 WLM) – 變更查詢的優先順序。

如要限制查詢的執行時間，建議您建立查詢監控規則，而不要使用 WLM 逾時。例如，您可將 `max_execution_time` 設定為 50,000 毫秒，如下列 JSON 程式碼片段所示。

```
"max_execution_time": 50000
```

但是，我們建議您改為定義同等的查詢監控規則。下列範例示範將 `query_execution_time` 設為 50 秒的查詢監控規則：

```
"rules": 
[
    {
        "rule_name": "rule_query_execution",
        "predicate": [
            {
                "metric_name": "query_execution_time",
                "operator": ">",
                "value": 50
            }
        ],
        "action": "abort"
    }            
]
```

如需建立或修改查詢監控規則的步驟，請參閱《Amazon Redshift 管理指南》**中的[建立查詢監控規則](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html)和 [wlm\$1json\$1configuration 參數中的屬性](https://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html#wlm-json-config-properties)。

在下列主題中，您可以找到查詢監控規則的詳細資訊：
+  [已佈建 Amazon Redshift 的查詢監控指標](#cm-c-wlm-query-monitoring-metrics) 
+  [查詢監控規則範本](#cm-c-wlm-query-monitoring-templates) 
+  [建立查詢監控規則](https://docs.aws.amazon.com/redshift/latest/mgmt/parameter-group-modify-qmr-console.html) 
+  [設定工作負載管理](https://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html) 
+  [查詢監控規則的系統資料表和檢視](#cm-c-wlm-qmr-tables-and-views) 

## 已佈建 Amazon Redshift 的查詢監控指標
<a name="cm-c-wlm-query-monitoring-metrics"></a>

下表描述查詢監控規則中使用的指標。(這些指標不同於 [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md) 和 [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md) 系統資料表中儲存的指標。) 

對於給定的指標，將會在查詢層級或區段層級追蹤效能臨界值。如需區段和步驟的相關資訊，請參閱[查詢計劃和執行工作流程](c-query-planning.md)。

**注意**  
[WLM 逾時](cm-c-defining-query-queues.md#wlm-timeout) 參數不同於查詢監控規則。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

**注意**  
`query_queue_time` 述詞不支援跳轉動作。也就是說，會忽略定義為在符合 `query_queue_time` 述詞時進行跳轉的規則。
區段執行時間太短可能會導致某些指標取樣錯誤，例如 `io_skew` 和 `query_cpu_usage_percent`。為了避免或減少取樣錯誤，請在規則中包含區段執行時間。`segment_execution_time > 10` 是很理想的起點。

[SVL\$1QUERY\$1METRICS](r_SVL_QUERY_METRICS.md) 檢視顯示已完成之查詢的指標。[SVL\$1QUERY\$1METRICS\$1SUMMARY](r_SVL_QUERY_METRICS_SUMMARY.md) 檢視顯示已完成之查詢的指標最大值。請使用這些檢視中的值來協助決定臨界值，以定義查詢監控規則。

## Amazon Redshift Serverless 的查詢監控指標
<a name="cm-c-wlm-query-monitoring-metrics-serverless"></a>

下表描述 Amazon Redshift Serverless 查詢監控規則中使用的指標。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

**注意**  
`max_query_queue_time` 述詞不支援跳轉動作。也就是說，會忽略定義為在符合 `max_query_queue_time` 述詞時進行跳轉的規則。
區段執行時間太短可能會導致某些指標取樣錯誤，例如 `max_io_skew` 和 `max_query_cpu_usage_percent`。

對於 Amazon Redshift Serverless，您可以使用 `wlm_json_configuration` 參數設定查詢佇列和監控規則。這可讓您使用上述指標建立具有不同使用者角色、查詢群組和監控規則的多個佇列。如需設定無伺服器查詢佇列的詳細資訊，請參閱《*Amazon Redshift 管理指南*》中的 [WLM JSON 組態結構](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-query-queues.html#serverless-wlm-json-configuration)。

## 查詢監控規則範本
<a name="cm-c-wlm-query-monitoring-templates"></a>

當您使用 Amazon Redshift 主控台新增規則時，您可以選擇從預先定義的範本建立規則。Amazon Redshift 會建立包含一組述詞的新規則，並以預設值填入述詞。預設動作為記錄。您可以修改述詞和動作，以符合您的使用案例。

下表列出可用的範本。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html)

## 查詢監控規則的系統資料表和檢視
<a name="cm-c-wlm-qmr-tables-and-views"></a>

當符合規則的所有述詞時，WLM 會將一列寫入 [STL\$1WLM\$1RULE\$1ACTION](r_STL_WLM_RULE_ACTION.md) 系統資料表。這一列包含觸發規則的查詢和所產生動作的詳細資訊。

此外，Amazon Redshift 會在下列系統資料表和檢視中記錄查詢指標。
+ [STV\$1QUERY\$1METRICS](r_STV_QUERY_METRICS.md) 資料表會顯示目前執行之查詢的指標。
+ [STL\$1QUERY\$1METRICS](r_STL_QUERY_METRICS.md) 資料表會記錄以完成之查詢的指標。
+ [SVL\$1QUERY\$1METRICS](r_SVL_QUERY_METRICS.md) 檢視顯示已完成之查詢的指標。
+ [SVL\$1QUERY\$1METRICS\$1SUMMARY](r_SVL_QUERY_METRICS_SUMMARY.md) 檢視顯示已完成之查詢的指標最大值。