Redshift Work Load Management(WLM)
作者:互联网
Redshift Work Load Management(WLM)
Amazon Redshift 工作负载管理 (WLM) 使用户能够灵活地管理工作负载中的优先级,这样短期、快速运行的查询就不会卡在长时间运行的查询后面的队列中。
基本上,当我们创建一个 redshift 集群时,它附加了默认的 WLM 配置。 在默认配置中,有两个队列。 第一个是并发为 1 的超级用户,第二个队列是并发为 5 的其他用户的默认队列。这意味着用户可以并行运行多达 5 个查询。 因此,例如,如果此队列有 5 个长时间运行的查询,则短查询将不得不等待这些查询完成。 为了解决这个问题,我们使用 WLM 以便我们可以为短查询和长查询创建单独的队列。 WLM 还允许我们在队列之间划分集群的整体内存。
Redshift Parameter Group
在 Amazon Redshift 中,您将参数组与您创建的每个集群相关联。 参数组是一组适用于您在集群中创建的所有数据库的参数。 这些参数配置数据库设置,例如查询超时和日期样式。 WLM 是参数组配置的一部分。
Defining Query Queues
当用户在 Amazon Redshift 中运行查询时,查询将路由到查询队列。 每个查询队列包含多个查询槽。 每个队列都分配了集群可用内存的一部分。 队列的内存在队列的查询槽之间分配。 您可以为每个查询队列配置 WLM 属性,以指定在插槽之间分配内存的方式、如何在运行时将查询路由到特定队列以及何时取消长时间运行的查询。 您还可以使用与 WLM 属性分开的 wlm_query_slot_count 参数,通过分配多个插槽来临时启用查询以使用更多内存。
默认情况下,Amazon Redshift 配置以下查询队列:
-
一个超级用户队列。 超级用户队列仅供超级用户使用,不能配置。 只有在需要运行影响系统的查询或出于故障排除目的时,才应使用此队列。 例如,当您需要取消用户长时间运行的查询或将用户添加到数据库时,请使用此队列。 您不应使用它来执行常规查询。
-
一个默认用户队列。 默认队列最初配置为同时运行五个查询。 您可以更改默认队列的并发、超时和内存分配属性,但不能指定用户组或查询组。 默认队列必须是 WLM 配置中的最后一个队列。 任何未路由到其他队列的查询都在默认队列中运行。
您可以向默认 WLM 配置添加额外的查询队列,最多总共有八个用户队列。 您可以为每个查询队列配置以下内容:
- Concurrency level
队列中的查询并发运行,直到它们达到为该队列定义的 WLM 查询槽计数或并发级别。 随后的查询然后在队列中等待。
每个队列最多可以配置 50 个查询槽。 所有用户定义队列的最大 WLM 查询槽数为 50。该限制包括默认队列,但不包括保留的超级用户队列。
注意:WLM 并发级别不同于可以建立到集群的并发用户连接数。 最大并发用户连接数为 500。
- User groups
以逗号分隔的用户组名称列表。 当用户组的成员在数据库中运行查询时,他们的查询将路由到与其用户组关联的队列。
- Query groups
以逗号分隔的查询组列表。 当查询组的成员在数据库中运行查询时,他们的查询将路由到与其查询组关联的队列。
- WLM memory percent to use
分配给队列的内存百分比。 如果为至少一个队列指定内存百分比,则必须为所有其他队列指定一个百分比,最多为 100%。 如果所有队列中的内存分配低于 100%,则未分配的内存由服务管理。 该服务可以暂时将此未分配的内存分配给请求额外内存进行处理的队列。
- WLM timeout
WLM 超时不适用于已达到返回状态的查询。 要查看查询的状态,请参阅 STV_WLM_QUERY_STATE 系统表。 COPY 语句和维护操作(例如 ANALYZE 和 VACUUM)不受 WLM 超时的影响。
WLM 超时的功能类似于 statement_timeout 配置参数,不同之处在于,statement_timeout 配置参数适用于整个集群,WLM 超时特定于 WLM 配置中的单个队列。
如果还指定了 statement_timeout,则使用 statement_timeout 和 WLM 超时 (max_execution_time) 中的较低者。
- WLM query queue hopping
由于 WLM 超时或查询监控规则 (QMR) 跳跃操作,查询可能会被跳跃。
当查询被跳跃时,WLM 会尝试根据 WLM 队列分配规则将查询路由到下一个匹配的队列。 如果查询与任何其他队列定义不匹配,则取消查询。 它没有分配给默认队列。
下表总结了具有 WLM 超时的不同类型查询的行为。
Query Type | Action |
---|---|
Insert, Update, Delete | Cancel |
UDF | Cancel |
UNLOAD | Cancel |
Copy | Continue execution |
maintenance operations | Continue execution |
Read-only query in a returning state | Continue execution |
Read-only query in a running state | Reassign or restart |
CREATE TABLE AS(CTAS),SELECT INTO | Reassign or restart |
- Query monitoring rule
查询监控规则为 WLM 队列定义基于指标的性能边界,并指定当查询超出这些边界时要采取的操作。
https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html
Modifying the WLM Configuration
更改 WLM 配置后,您可能需要重新启动集群。
Short Query Acceleration
短查询加速 (SQA) 将选定的短时间查询优先于长时间运行的查询。 SQA 在专用空间中执行短期运行的查询,因此 SQA 查询不会被迫在较长查询之后的队列中等待。 SQA 仅优先考虑短期运行且位于用户定义队列中的查询。CREATE TABLE AS (CTAS) 语句和只读查询(例如 SELECT 语句)符合 SQA 的条件。
SQA 在默认参数组和所有新参数组中默认启用。 要在 Amazon Redshift 控制台中禁用 SQA,请编辑参数组的 WLM 配置并取消选择启用短查询加速。
当您启用 SQA 时,所有用户定义的队列中的 WLM 查询槽总数或并发总数必须为 15 或更少。 如果您使用 AWS CLI 或 Amazon Redshift API 启用 SQA,则不会强制执行插槽计数限制。
Monitoring SQA
To check whether SQA is enabled, run the following query. If the query returns a row, then SQA is enabled.
select * from stv_wlm_service_class_config
where service_class = 14;
**WLM Queue Assignment Rules
- 如果用户以超级用户身份登录并在标记为超级用户的查询组中运行查询,则该查询将分配到超级用户队列。
- 如果用户属于列出的用户组,或者用户在列出的查询组内运行查询,则该查询将分配到第一个匹配队列。
- 如果查询不满足任何条件,则该查询将分配给默认队列,即 WLM 配置中定义的最后一个队列。
https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-queue-assignment-rules.html
Assigning Queries to Queues
https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
WLM Dynamic and Static Configuration Properties
WLM 配置属性要么是动态的,要么是静态的。 如果您更改了任何动态属性,则无需重新启动集群以使更改生效。 在应用动态更改时,您的集群状态正在修改。 如果添加或删除查询队列或更改任何静态属性,则必须在任何 WLM 参数更改(包括对动态属性的更改)生效之前重新启动集群。
The following WLM properties are static:
● User groups
● User group wildcard
● Query groups
● Query group wildcard
The following WLM properties are dynamic:
● Concurrency
● Percent of memory to use
● Timeout
如果更改超时值,则新值将应用于更改该值后开始执行的任何查询。 如果要使用的并发性或内存百分比发生更改,Amazon Redshift 会动态转换到新配置,以便当前运行的查询不受更改的影响。
WLM Query Monitoring Rules
https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-query-monitoring-rules.html
Reference
https://medium.com/@bilal.zahid11786/aws-redshift-wlm-work-load-management-11b635036ac7
标签:Load,Management,队列,Work,用户,默认,查询,WLM,SQA 来源: https://blog.csdn.net/chg1226/article/details/122341136