如果您正在运行 WLM,并且工作负载需要并行运行 15 个以上的查询,我们建议您启用并发扩展。这是因为将查询槽数增加到 15 以上可能会导致系统资源争用,限制了单个集群的总吞吐量。利用并发扩展,您可以并行运行数百个查询,最多可达到配置的并发扩展集群数。并发扩展集群的数量由
max_concurrency_scaling_clusters
控制。有关并发扩展的更多信息,请参阅
并发扩展
。
您可以通过指定每个用户组的名称或使用通配符将一组用户组分配给某个队列。当所列用户组的成员运行某个查询时,该查询将在相应的队列中运行。您可以向队列分配任意数量的用户组。有关更多信息,请参阅
根据用户组为队列分配查询
。
您可以通过指定每个用户角色的名称或使用通配符将一组用户角色分配给某个队列。当所列用户角色的成员运行某个查询时,该查询将在相应的队列中运行。您可以向队列分配任意数量的用户角色。有关更多信息,请参阅
根据用户角色为队列分配查询
。
您可以通过指定每个队列组的名称或使用通配符将一组查询组分配给某个队列。查询组只是一种标签。在运行时,您可以将查询组标签分配给一系列查询。分配给所列查询组的任意查询都将在相应的队列中运行。您可以向队列分配任意数量的查询组。有关更多信息,请参阅
为查询组分配查询
。
如果在 WLM 队列配置中启用了通配符,则可以单独地或使用 Unix shell 样式的通配符向队列分配用户组和查询组。模式匹配不区分大小写。
例如,“*”通配符字符匹配任意数量的字符。因此,如果您将
dba_*
添加到某个队列的用户组列表中,则属于名称以开头的
dba_
组的所有用户查询都将分配到该队列。示例包括
dba_admin
或
DBA_primary
。“?”通配符匹配任意单个字符。因此,如果队列包括用户组
dba?1
,则名为
dba11
和
dba21
的用户组匹配,但
dba12
不匹配。
默认情况下,通配符处于关闭状态。
要使用的 WLM 内存百分比
在自动 WLM 配置中,内存百分比设置为
auto
。有关更多信息,请参阅
实施自动 WLM
。
在手动 WLM 配置中,要指定分配给查询的可用内存量,您可以设置
WLM Memory Percent to Use
参数。默认情况下,会向每个用户定义队列分配相等的用户定义查询可用内存。例如,如果有四个用户定义队列,则会向每个队列分配 25% 的可用内存。超级用户队列有自己的分配内存,无法进行修改。要更改分配,您可以向每个队列分配整数比例的内存,总计最高为 100%。任意未分配的内存将由 Amazon Redshift 进行管理,如果有队列请求更多内存以进行处理,可以临时分配给该队列。
例如,如果配置了四个队列,则可以按以下方式分配内存:20%、30%、15%、15%。其余的 20% 未分配,由该服务管理。
WLM 超时
WLM 超时 (
max_execution_time
) 已弃用。相反,使用
query_execution_time
创建查询监控规则 (QMR) 来限制经过的查询执行时间。有关更多信息,请参阅
WLM 查询监控规则
。
要限制允许查询在给定 WLM 队列中停留的时间,您可以为每个队列设置 WLM 超时。超时参数指定 Amazon Redshift 在取消或跳过查询前等待查询执行的时间量(单位为毫秒)。超时基于查询执行时间,不包括在队列中等待的时间。
WLM 尝试跳过
CREATE TABLE AS
(CTAS) 语句和只读查询,例如 SELECT 语句。无法跳过的查询将被取消。有关更多信息,请参阅
WLM 查询队列跳过
。
查询已进入“returning”状态时,WLM 超时不适用。要查看查询的状态,请参阅
STV_WLM_QUERY_STATE
系统表。COPY 语句和维护操作(例如 ANALYZE 和 VACUUM)不受 WLM 超时约束。
WLM 超时功能类似于
statement_timeout
配置参数。区别在于,
statement_timeout
配置参数应用于整个集群,WLM 超时特定于 WLM 配置中的单个队列。
如果还指定了
statement_timeout
,则会使用 statement_timeout 和 WLM timeout (max_execution_time) 中的较小者。