从补丁 198 开始,Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息,请参阅博客文章。
设置查询队列
Amazon Redshift Serverless 支持基于队列的查询资源管理。您可以为不同的工作负载创建带有自定义监控规则的专用查询队列。此功能提供对资源使用情况的精细控制。
查询监控规则(QMR)仅适用于 Redshift Serverless 工作组级别,并一致地影响在该工作组中运行的所有查询。基于队列的方法支持您创建具有不同监控规则的队列。您可以将这些队列分配给特定的用户角色和查询组。每个队列独立运行,而规则仅影响该队列中的查询。
队列可让您设置基于指标的谓词和自动响应。例如,您可以配置规则,以自动中止超过时间限制或消耗过多资源的查询。
注意事项
使用无服务器队列时,请注意以下事项:
-
Redshift 无服务器队列不支持在 Amazon Redshift 预置集群中使用的以下工作负载管理(WLM)配置键:max_execution_time、short_query_queue、auto_wlm、concurrency_scaling、priority、queue_type、query_concurrency、memory_percent_to_use、user_group、user_group_wild_card。
此外,无服务器不支持 hop、change_query_priority 操作。
-
Amazon Redshift Serverless 不支持 hop 操作(在队列之间移动查询)。
-
仅 Amazon Redshift 预置集群支持队列优先级。
-
Amazon Redshift Serverless 会自动管理扩展和资源分配以实现最佳性能,因此您无需手动配置队列优先级。
设置查询队列
您可以使用 AWS 管理控制台、AWS CLI 或 Redshift Serverless API 在“限制”选项卡下为无服务器工作组创建队列。
- Console
-
按照以下步骤为无服务器工作组创建队列。
-
导航到 Redshift Serverless 工作组。
-
选择“限制”选项卡。
-
在查询队列下,选择启用队列。
启用查询队列是一项永久性更改。启用后,您将无法恢复到无队列监控。
-
使用以下参数配置队列:
队列级别参数
规则级别参数
谓词级别参数
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"]
}
]
在本示例中:
- CLI
-
您可以将 CreateWorkgroup 或 UpdateWorkgroup API 与 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\"]}]"}]'
最佳实践
使用无服务器队列时,请记住以下最佳实践。