WLM 队列分配规则 - Amazon Redshift

WLM 队列分配规则

使用 Amazon Redshift,您可以通过在工作负载管理(WLM)配置中定义队列分配规则来控制分配给用户查询的内存和 CPU 资源。下一节将介绍如何创建和管理 WLM 队列分配规则,以实现高效的资源分配并满足 Amazon Redshift 中各种工作负载的服务级别协议。

当用户运行查询时,WLM 基于 WLM 队列分配规则将查询分配给第一个匹配的队列。

  1. 如果用户以超级用户身份登录并在带有超级用户标签的查询组中运行某个查询,则该查询会分配到超级用户队列。

  2. 如果用户属于某个角色、属于所列的用户组或在所列查询组中运行某个查询,则该查询会分配给第一个匹配队列。

  3. 如果某个查询不满足任何条件,则该查询会分配给默认队列,即 WLM 配置中定义的最后一个队列。

下图说明这些规则的工作方式。

WLM 用于将查询分配到队列的规则流程图。

队列分配示例

下表列出了具有超级用户队列和四个用户定义队列的 WLM 配置。

Queue 并发 用户角色 用户组 查询组

Superuser

1

超级用户

1

5

test_db_rw

UG_1

2

5

QG_B

3

5

UG_2

QG_C

默认

5

下面的插图介绍系统如何根据用户组和查询组将查询分配给前一个表中的队列。有关如何在运行时将查询分配给用户组和查询组的信息,请参阅本节后面的为队列分配查询

根据用户组和查询组分配给队列的查询示例列表。

在本示例中,WLM 进行以下分配:

  1. 第一组语句介绍将用户分配给用户组的三种方式。这些语句由用户 adminuser 运行,该用户不是任何 WLM 队列中所列用户组的成员。未设置任何查询组,因此,系统将这些语句路由到默认队列。

  2. 用户 adminuser 是超级用户,查询组设置为 'superuser',因此,该查询分配给超级用户队列。

  3. 为用户 test_user 分配了队列 1 中所列的角色 test_db_rw,因此,该查询分配给队列 1。

  4. 用户 admin1 是队列 1 中所列用户组的成员,因此,该查询分配给队列 1。

  5. 用户 vp1 不是任何所列用户组的成员。查询组设置为 'QG_B',因此,该查询分配给队列 2。

  6. 用户 analyst1 是队列 3 中所列用户组的成员,但 'QG_B' 匹配队列 2,因此,该查询分配给队列 2。

  7. 用户 ralph 不是任何所列用户组的成员,且查询组被重置,因此,不存在任何匹配队列。该查询分配给默认队列。