添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
焦虑的柳树  ·  Amazon Redshift ...·  6 天前    · 
爱搭讪的哑铃  ·  实施手动 WLM - Amazon ...·  6 天前    · 
憨厚的枇杷  ·  Not able to update ...·  2 月前    · 
没人理的瀑布  ·  深入剖析 Qt ...·  8 月前    · 

一个超级用户队列

超级用户队列是专为超级用户预留的队列,无法进行配置。仅在需要运行影响系统的查询或用于故障排除目的时,才应使用该队列。例如,如果需要取消用户的耗时查询或向数据库添加用户,则可使用该队列。请不要使用它来执行常规查询。该队列不显示在控制台中,但在数据库的系统表中显示为第五队列。要在超级用户队列中运行查询,用户必须以超级用户身份登录并使用预定义的 superuser 查询组运行查询。

一个默认用户队列

默认队列初始配置为并发运行五个查询。在使用手动 WLM 时,您可以更改默认队列的并发、超时和内存分配属性,但不能指定用户组或查询组。默认队列必须是 WLM 配置中最后一个队列。未路由到其他队列的查询在默认队列中运行。

查询队列在 WLM 配置中定义。WLM 配置是参数组中的可编辑参数 ( wlm_json_configuration ),可与一个或多个集群关联。有关更多信息,请参阅《Amazon Redshift 管理指南》 中的 配置工作负载管理

您可以向默认 WLM 配置添加其他查询队列,最多可添加八个用户队列。您可以为每个查询队列配置以下内容:

并发扩展模式

启用并发扩展后,Amazon Redshift 会在需要时自动增加额外的集群容量来处理增多的并发读取查询。不管查询在主集群上运行还是在并发扩展集群上运行,用户都将看到最新的数据。

您可以通过配置 WLM 队列来管理将哪些查询发送到并发扩展集群。为队列启用并发扩展后,符合条件的查询将发送到并发扩展集群,而不是排队等待。有关更多信息,请参阅 并发扩展

队列中的查询以并发方式运行,直到它们达到为该队列定义的 WLM 队列插槽计数或 并发 级别。达到并发级别后,后续查询将在队列中等待。

注意

WLM 并发级别不同于一个集群可以拥有的并行用户连接数。有关更多信息,请参阅《Amazon Redshift 管理指南》 中的 连接到集群

在自动 WLM 配置(推荐)中,并发级别设置为 自动 。Amazon Redshift 为查询动态分配内存,这会随之确定同时运行多少个查询。此数量基于运行查询和排队查询所需的资源。自动 WLM 不可配置。有关更多信息,请参阅 实施自动 WLM

在手动 WLM 配置中,Amazon Redshift 向每个队列静态分配固定数量的内存。队列的内存在查询槽之间均匀分配。举例来说,如果向队列分配了 20% 的集群内存并且有 10 个插槽,则每个查询将分配 2% 的集群内存。内存分配保持固定,不论并行运行的查询数量是多少。由于此固定内存分配,对于插槽计数为 5 时可完全在内存中运行的查询,如果将其插槽计数提高到 20,则可能需要将中间结果写入磁盘。在这个例子中,每个查询的队列内存份额从 1/5 减少到 1/20。额外的磁盘 I/O 会降低性能。

所有用户定义的队列的最大插槽计数为 50。这限制了所有队列的总插槽数,包括默认队列。唯一不受此限制的队列是预留的超级用户队列。

如果有许多小型查询被迫等待耗时的查询,则可创建一个具有更高插槽计数的独立队列,并将小型查询分配给该队列。并发级别较高的队列,分配给每个查询槽的内存较少,不过较小的查询需要的内存较少。

注意

如果您启用短查询加速 (SQA),WLM 会自动让短时查询优先于长时查询,因此对于大多数工作流程,不需要单独的队列来进行短查询。有关更多信息,请参阅 短查询加速

如果您有多个查询,每个查询访问单个切片上的数据,则可设置独立的 WLM 队列,以并发执行这些查询。Amazon Redshift 将并发查询分配给多个独立的切片,使多个查询能够在多个切片上并行执行。例如,如果某个查询是简单的聚合操作,且使用基于分配键的谓词,则该查询的数据将位于单个切片上。

手动 WLM 示例

此示例是一个简单的手动 WLM 场景,显示了如何分配插槽和内存。您对以下三个队列实施手动 WLM:

  • data-ingestion 队列 – 此队列设置用于提取数据。为该队列分配了 20% 的集群内存,并且该队列有 5 个插槽。因此,队列中可以同时运行 5 个查询,每个查询分配了 4% 的集群内存。

  • data-scientist 队列 – 专为内存密集型查询设计。为该队列分配了 40% 的集群内存,并且该队列有 5 个插槽。因此可以同时运行 5 个查询,每个查询分配了 8% 的集群内存。

  • default 队列 – 这是为组织中大多数用户设计的队列。包括销售和会计团队,他们会运行短时间或中等时间长度且并不复杂的查询。为该队列分配了 40% 的集群内存,并且该队列有 40 个插槽。此队列中可以同时运行 40 个查询,每个查询分配了 1% 的集群内存。这是可以为此队列分配的最大插槽数,因为所有队列的总数限制为 50。

如果您正在运行 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) 中的较小者。