我想在 Amazon Redshift 中创建某些查询队列并确定其优先级。
简短描述
在 Amazon Redshift 中,您可以创建提取、转换、加载 (ETL) 查询,然后根据优先级将它们分成不同的队列。可以根据用户组、查询组和查询分配规则确定查询的优先级。
要确定查询的优先级,请使用 Amazon Redshift 工作负载管理 (WLM)。Amazon Redshift 支持以下 WLM 配置:
- 自动 WLM:启用自动 WLM 后,您的查询并发性和内存分配将由 Amazon Redshift 管理。Amazon Redshift 将确定查询所需的资源量,并进行相应的调整。与手动 WLM 不同,自动 WLM 允许您设置查询优先级值,以指示工作负载的相对优先级。对于自动和手动 WLM,都可以创建单独的查询队列。
- 手动 WLM:手动 WLM 用于管理 Amazon Redshift 中的多个 WLM 队列。使用手动 WLM 时,必须为 WLM 查询并发插槽和内存分配属性指定值。对于自动和手动 WLM,都可以创建单独的查询队列。对于手动 WLM,默认并发值为五个查询,内存分配为平均分配。如果要管理自己的工作负载或手动将资源分配给查询,请使用手动 WLM。
要确定查询的优先级,请选择最适合您的使用案例的 WLM 配置。
解决方法
自动 WLM
启用自动 WLM 后,Amazon Redshift 会自动确定资源分配给每个查询的方式。根据您的工作负载调整并发性。
**注意:**最佳做法是在将配置迁移到生产环境之前,在现有查询或工作负载上测试自动 WLM。
要使用自动 WLM 在 Amazon Redshift 中设置工作负载的优先级,请执行以下步骤:
- 登录 AWS 管理控制台。
- 打开 Amazon Redshift 控制台。
- 从导航菜单中,选择 CONFIG。
- 选择工作负载管理。
- 选择要修改的参数组。
- 选择工作负载管理选项卡以查看当前 WLM 配置。
- (可选)如果 WLM 参数组设置为自动 WLM 模式,则不需要进行更新。
- (可选)如果 WLM 参数组设置为手动 WLM 模式,请修改参数组的 WLM 配置。选择编辑工作负载队列以编辑 WLM 配置。然后,选择切换 WLM 模式以切换到自动 WLM。
- 选择添加队列以添加其他工作负载队列。您可以为每个工作负载创建单独的队列(最多 8 个队列),将队列与用户组或查询组关联。
- 选择 Save(保存)。
- 将查询分配给队列。
- 配置队列的优先级状态。默认情况下,每个队列都将分配一个“正常”优先级状态。
**注意:**超级用户可以对查询应用“严重”优先级状态(最高优先级级别)。如果工作负载被标记为“严重”优先级,则每次只能运行其中一个查询。
- (可选)创建 WLM 查询监控规则,以定义查询和队列的性能边界(如时间限制或并发级别)。例如,您可以设置查询监控规则,以便在正在运行的查询超过 40 秒时更改查询的优先级状态。
手动 WLM
启用手动 WLM 后,系统会为每个队列分配集群的部分可用内存。队列的内存在队列的查询插槽之间平均分配。如果要管理多个 WLM 队列,则可以配置工作负载管理 (WLM) 队列以改进查询处理。
要使用手动 WLM 在 Amazon Redshift 中设置工作负载的优先级,请执行以下步骤:
- 登录 AWS 管理控制台。
- 打开 Amazon Redshift 控制台。
- 从导航菜单中,选择 CONFIG。
- 选择工作负载管理。
- 选择要修改的参数组。
- 选择工作负载管理选项卡以查看当前 WLM 配置。
- (可选)如果 WLM 参数组设置为手动 WLM 模式,则不需要进行更新。
- (可选)如果 WLM 参数组设置为自动 WLM 模式,请修改参数组的 WLM 配置。选择编辑工作负载队列以编辑 WLM 配置。然后,选择切换 WLM 模式以切换到手动 WLM。
- 选择添加队列以添加其他工作负载队列。您可以为每个工作负载创建单独的队列(最多 8 个队列),将队列与用户组或查询组关联。
- 选择 Save(保存)。
- 创建和定义查询分配规则。
**注意:**根据用户或查询组分配查询。未分配的查询会在默认队列中运行。
- 使用 WLM 动态内存分配配置分配给每个队列的内存量。WLM 动态内存配置可帮助您根据内存使用情况确定工作负载的优先级。
- (可选)创建并定义查询监控规则以管理达到指标边界的查询。例如,您可以使用查询监控规则跳过或取消运行时间较长的查询。
相关信息
WLM 队列分配规则
WLM 系统表和视图
STV_WLM_QUERY_QUEUE_STATE
STV_WLM_QUERY_STATE
STV_WLM_SERVICE_CLASS_CONFIG