Amazon Redshift
数据库开发人员指南 (API 版本 2012-12-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

并发扩展

使用并发扩展,您可以支持几乎无限的并发用户和并发查询,同时提供始终如一的快速查询性能。启用并发扩展后,Amazon Redshift 会在需要时自动增加额外的集群容量来处理增多的并发读取查询。写入操作像往常一样继续在主集群上进行。不管查询在主集群上运行还是在并发扩展集群上运行,用户将始终看到最新的数据。仅当并发扩展集群处于使用状态时,您才需要为其付费。有关定价的更多信息,请参阅 Amazon Redshift 定价。您可以通过配置 WLM 队列来管理将哪些查询发送到并发扩展集群。为队列启用并发扩展后,符合条件的查询将发送到并发扩展集群,而不是排队等待。

并发扩展候选者

仅当主集群满足以下要求时,才将查询路由到并发扩展集群:

  • EC2-VPC 平台

  • 节点类型必须为 dc2.8xlarge、ds2.8xlarge、dc2.large 或 ds2.xlarge

  • 最多 32 个计算节点

  • 非单节点集群

查询必须满足以下所有条件才能成为并发扩展的候选者。

  • 必须是只读查询。

  • 查询未引用使用交错排序键的表。

  • 查询未引用用户定义的临时表。

配置并发扩展队列

通过将工作负载管理器 (WLM) 队列启用为并发扩展队列来将查询路由到并发扩展集群。要在队列上启用并发扩展,请将 Concurrency Scaling mode (并发扩展模式) 值设置为 auto (自动)

当路由到并发扩展队列的查询数超过队列配置的并发数时,符合条件的查询将发送到并发扩展集群。当有槽位可用时,将在主集群上运行查询。队列数仅受每集群允许的队列数限制。与任何 WLM 队列一样,您可以根据用户组或通过使用查询组标签标记查询来将查询路由到并发扩展队列。您还可以通过定义 WLM 查询监控规则来路由查询。例如,您可以将所有耗时超过 5 秒的查询路由到并发扩展队列。

监控并发扩展

您可以通过以下方式查看查询运行在主集群还是并发扩展集群上:查看 Amazon Redshift 控制台,导航到集群,选择一个集群。然后选择查询选项卡并查看列 Executed on (执行载体) 中的值来确定运行查询的集群。

要查找执行时间,请查询 STL_QUERY 表并筛选 concurrency_scaling_status 列。以下查询比较在并发扩展集群上运行的查询与在主集群上运行的查询的队列时间和执行时间。

SELECT w.service_class AS queue , q.concurrency_scaling_status , COUNT( * ) AS queries , SUM( q.aborted ) AS aborted , SUM( ROUND( total_queue_time::NUMERIC / 1000000,2 ) ) AS queue_secs , SUM( ROUND( total_exec_time::NUMERIC / 1000000,2 ) ) AS exec_secs FROM stl_query q JOIN stl_wlm_query w USING (userid,query) WHERE q.userid > 1 AND q.starttime > '2019-01-04 16:38:00' AND q.endtime < '2019-01-04 17:40:00' GROUP BY 1,2 ORDER BY 1,2;

并发扩展系统视图

一组带有前缀 SVCS 的系统视图提供了系统日志表中有关主集群和并发扩展集群上的查询的详细信息。

以下视图具有与相应的 STL 表或 SVL 视图类似的信息:

以下视图专门用于并发扩展。

有关并发扩展的更多信息,请参阅 Amazon Redshift Cluster Management Guide 中的以下主题。