設定查詢佇列 - Amazon Redshift

Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊,請參閱部落格文章

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

設定查詢佇列

Amazon Redshift Serverless 支援佇列型查詢資源管理。您可以使用不同工作負載的自訂監控規則來建立專用查詢佇列。此功能提供對資源用量的精細控制。

查詢監控規則 (QMR) 僅適用於 Redshift Serverless 工作群組層級,影響此工作群組中執行的所有查詢。佇列型方法可讓您建立具有不同監控規則的佇列。您可以將這些佇列指派給特定使用者角色和查詢群組。每個佇列都會獨立運作,規則只會影響該佇列中的查詢。

佇列可讓您設定指標型述詞和自動化回應。例如,您可以設定規則來自動中止超過時間限制或耗用太多資源的查詢。

考量事項

使用無伺服器佇列時,請考慮下列事項:

  • Redshift Serverless 佇列不支援 Amazon Redshift 佈建叢集中使用的下列工作負載管理 (WLM) 組態金鑰:max_execution_timeshort_query_queueauto_wlmconcurrency_scalingpriorityqueue_typequery_concurrencymemory_percent_to_useuser_group、、user_group_wild_card

    此外,Serverless 不支援 change_query_priority 動作。

  • Amazon Redshift Serverless 不支援躍點動作 (在佇列之間移動查詢)。

  • 僅 Amazon Redshift 佈建叢集支援佇列優先順序。

  • Amazon Redshift Serverless 會自動管理擴展和資源配置,以獲得最佳效能,因此您不需要手動設定佇列優先順序。

設定查詢佇列

您可以使用 AWS 管理主控台 AWS CLI或 Redshift Serverless API,在無伺服器工作群組的限制索引標籤下建立佇列。

Console

請依照下列步驟,為您的無伺服器工作群組建立佇列。

  1. 導覽至 Redshift Serverless 工作群組。

  2. 選取限制索引標籤。

  3. 查詢佇列下,選擇啟用佇列

    重要

    啟用查詢佇列是永久變更。一旦啟用,您就無法還原至無佇列監控。

  4. 使用下列參數設定佇列:

    佇列層級參數

    • name - 佇列識別符 (必要、唯一、非空白)

    • user_role - 使用者角色陣列 (選用)

    • query_group - 查詢群組陣列 (選用)

    • query_group_wild_card - 0 或 1 以啟用萬用字元比對 (選用)

    • user_group_wild_card - 0 或 1 以啟用萬用字元比對 (選用)

    • rules - 監控規則陣列 (選用)

    規則層級參數

    • rule_name - 唯一識別符,最多 32 個字元 (必要)

    • predicate - 條件陣列,1-3 個述詞 (必要)

    • action - "abort" 或 "log" (必要)

    述詞層級參數

    • metric_name - 要監控的指標 (必要)

    • operator - "="、"<" 或 ">" (必要)

    • value - 數值閾值 (必要)

    限制

    • 最多 8 個佇列

    • 所有佇列最多 25 個規則

    • 每個規則最多 3 個述詞

    • 規則名稱全域必須是唯一的

範例組態

三個佇列範例:一個用於短逾時的儀表板查詢,一個用於長逾時的 ETL 查詢,另一個用於管理員佇列:

[ { "name": "dashboard", "user_role": ["analyst", "viewer"], "query_group": ["reporting"], "query_group_wild_card": 1, "rules": [ { "rule_name": "short_timeout", "predicate": [ { "metric_name": "query_execution_time", "operator": ">", "value": 60 } ], "action": "abort" } ] }, { "name": "ETL", "user_role": ["data_scientist"], "query_group": ["analytics", "ml"], "rules": [ { "rule_name": "long_timeout", "predicate": [ { "metric_name": "query_execution_time", "operator": ">", "value": 3600 } ], "action": "log" }, { "rule_name": "memory_limit", "predicate": [ { "metric_name": "query_temp_blocks_to_disk", "operator": ">", "value": 100000 } ], "action": "abort" } ] }, { "name": "admin_queue", "user_role": ["admin"], "query_group": ["admin"] } ]

在此範例中:

  • 如果儀表板查詢執行超過 60 秒,則會中止查詢

  • 如果 ETL 查詢執行超過一小時,則會記錄這些查詢

  • 管理員佇列沒有任何資源限制

CLI

您可以使用 CreateWorkgroup 或 UpdateWorkgroup APIs搭配 wlm_json_configuration 組態參數來管理佇列,以 JSON 格式指定佇列。

aws redshift-serverless create-workgroup \ --workgroup-name test-workgroup \ --namespace-name test-namespace \ --config-parameters '[{"parameterKey": "wlm_json_configuration", "parameterValue": "[{\"name\":\"dashboard\",\"user_role\":[\"analyst\",\"viewer\"],\"query_group\":[\"reporting\"],\"query_group_wild_card\":1,\"rules\":[{\"rule_name\":\"short_timeout\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":60}],\"action\":\"abort\"}]},{\"name\":\"ETL\",\"user_role\":[\"data_scientist\"],\"query_group\":[\"analytics\",\"ml\"],\"rules\":[{\"rule_name\":\"long_timeout\",\"predicate\":[{\"metric_name\":\"query_execution_time\",\"operator\":\">\",\"value\":3600}],\"action\":\"log\"},{\"rule_name\":\"memory_limit\",\"predicate\":[{\"metric_name\":\"query_temp_blocks_to_disk\",\"operator\":\">\",\"value\":100000}],\"action\":\"abort\"}]},{\"name\":\"admin_queue\",\"user_role\":[\"admin\"],\"query_group\":[\"admin\"]}]"}]'

最佳實務

當您使用無伺服器佇列時,請記住下列最佳實務。