并发扩展 - Amazon Redshift

并发扩展

使用并发扩展功能,您可以支持成千上万的并发用户和并发查询,同时提供始终如一的快速查询性能。开启并发扩展后,Amazon Redshift 会自动增加额外的集群容量来处理增多的读取查询和写入查询。不管查询在主集群上运行还是在并发扩展集群上运行,用户都将看到最新的数据。

您可以通过配置 WLM 队列来管理将哪些查询发送到并发扩展集群。开启并发扩展后,符合条件的查询将发送到并发扩展集群,而不是排队等待。

仅当并发扩展集群正在主动运行查询时,您才需要为其付费。有关定价的更多信息,包括费用如何累积和最低费用,请参阅并发扩展定价

并发扩展功能

为 WLM 队列开启并发扩展时,它将适用于读取操作,如控制面板查询。它还适用于常用的写操作,例如用于数据摄入和处理的语句。

写操作的并发扩展功能

并发扩展支持经常使用的写操作,例如提取、转换和加载 (ETL) 语句。当您希望在集群收到大量请求时保持一致的响应时间时,写操作的并发扩展特别有用。它提高了在主集群上争夺资源的写操作的吞吐量。

并发扩展支持 COPY、INSERT、DELETE、UPDATE 和 CREATE TABLE AS (CTAS) 语句。此外,并发扩展支持不使用聚合的 MV 的实体化视图刷新。不支持其他数据处理语言 (DML) 语句和数据定义语言 (DDL) 语句。如果不支持的写入语句(如 CREATE without TABLE AS)包含在支持的写入语句之前的显式事务中,则所有写入语句都不会在并发扩展集群上运行。

当您为并发扩展累计积分时,此积分应计适用于读取和写操作。

并发扩展的限制

以下是使用 Amazon Redshift 并发扩展的限制:

  • 它不支持查询使用交错排序键的表。

  • 它不支持查询临时表。

  • 它不支持访问受限制性网络或 Virtual Private Cloud (VPC) 配置保护的外部资源的查询。

  • 它不支持包含 Python 用户定义函数(UDF)和 Lambda UDF 的查询。

  • 它不支持访问系统表、PostgreSQL 目录表或非备份表的查询。

  • 在实施限制性 IAM 策略权限时,它不支持访问外部资源的 COPY 或 UNLOAD 查询。这包括应用于资源(例如 Amazon S3 存储桶或 DynamoDB 表)或源的权限。IAM 源可以包括:

    • aws:sourceVpc – 一个 VPC 源。

    • aws:sourceVpce – 源 VPC 端点。

    • aws:sourceIp – 源 IP 地址。

    在某些情况下,您可能需要删除限制资源或源的权限,以便将访问资源的 COPY 和 UNLOAD 查询发送到并发扩展集群。

    有关资源策略的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的策略类型,以及使用存储桶策略控制从 VPC 端点的访问

  • DDL 操作(如 CREATE TABLE 或 ALTER TABLE)不支持 Amazon Redshift 并发扩展用于写操作。

  • 它不支持 COPY 命令的 ANALYZE。

  • 它不支持对 DISTSTYLE 设置为 ALL 的目标表进行写操作。

  • 它不支持以下文件格式的 COPY:

    • Parquet

    • ORC

  • 它不支持对具有身份列的表进行写操作。

  • Amazon Redshift 仅支持 Amazon Redshift RA3 节点上写操作的并发扩展。其他节点类型不支持写操作的并发扩展。

并发扩展的AWS 区域

通过 Amazon Redshift,您可以使用并发扩展来管理 Redshift 集群上的并发工作负载需求。本主题详细介绍在哪些区域可以通过 Amazon Redshift 使用并发扩展。

并发扩展在以下 AWS 区域可用:

  • 美国东部(弗吉尼亚北部)区域 (us-east-1)

  • 美国东部(俄亥俄)区域 (us-east-2)

  • 美国西部(加利福尼亚北部)区域 (us-west-1)

  • 美国西部(俄勒冈州)区域 (us-west-2)

  • 亚太地区(孟买)区域 (ap-south-1)

  • 亚太地区(首尔)区域 (ap-northeast-2)

  • 亚太地区(新加坡)区域 (ap-southeast-1)

  • 亚太地区(悉尼)区域 (ap-southeast-2)

  • 亚太地区(东京)区域 (ap-northeast-1)

  • 加拿大(中部)区域 (ca-central-1)

  • 中国(北京)区域 (cn-north-1)

  • 中国(宁夏)区域 (cn-northwest-1)

  • 欧洲(法兰克福)区域 (eu-central-1)

  • 欧洲(爱尔兰)区域 (eu-west-1)

  • 欧洲(伦敦)区域 (eu-west-2)

  • 欧洲(巴黎)区域 (eu-west-3)

  • 欧洲(斯德哥尔摩)区域 (eu-north-1)

  • 欧洲(苏黎世)区域(eu-central-2)

  • 欧洲(西班牙)区域(eu-south-2)

  • 南美洲(圣保罗)区域 (sa-east-1)

  • AWS GovCloud(美国东部)

并发扩展候选项

使用 Amazon Redshift,您可以横向扩展查询处理,以加速并发查询的执行。以下主题介绍 Amazon Redshift 用于确定将哪些查询路由到并发扩展的标准。

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

  • EC2-VPC 平台。

  • 节点类型必须是 dc2.8xlarge、dc2.large、ra3.large、ra3.xlplus、ra3.4xlarge 或 ra3.16xlarge。仅 Amazon Redshift RA3 节点支持写操作的并发扩展。

  • 对于具有 ra3.xlplus、ra3.4xlarge 或 ra3.16xlarge 节点类型的集群,最多 32 个计算节点。此外,在最初创建集群时,主集群的节点数不能大于 32 个节点。例如,即使集群当前有 20 个节点,但最初创建时具有 40 个节点,它也不符合并发扩展的要求。相反,如果 DC2 集群当前有 40 个节点,但最初创建时具有 20 个节点,则它确实满足并发扩展的要求。

  • 非单节点集群。

配置并发扩展队列

使用 Amazon Redshift,您可以通过配置并发扩展来管理并发性和系统资源。并发扩展队列允许您对可并发执行的查询或用户会话数量设置限制。下一节将说明如何在 Amazon Redshift 中启用并发扩展队列,以便有效处理并发查询和用户会话。

您可以在工作负载管理器(WLM)队列中启用并发扩展,来将查询路由到并发扩展集群。要在队列上开启并发扩展,请将并发扩展模式值设置为自动

在启用了并发扩展的队列中,当路由过来的查询数超过了队列的并发容量(不论该容量为手动配置还是自动确定)时,符合条件的查询将发送到并发扩展集群。当主集群上有队列槽可用时,查询将路由到主集群并在主集群上运行。与任何 WLM 队列一样,在将查询路由到并发扩展队列时,您可以基于用户组、使用查询组标签来标记查询,也可以根据在为队列分配查询中定义的匹配条件。您还可以通过定义 WLM 查询监控规则来路由查询。例如,您可以将所有耗时超过 5 秒的查询路由到并发扩展队列。请记住,根据您使用的是自动 WLM 还是手动 WLM,排队行为可能会有所不同。有关更多信息,请参阅实施自动 WLM实施手动 WLM

并发扩展集群的默认数量为 1。可以使用的并发扩展集群的数量由 max_concurrency_scaling_clusters 控制。

监控并发扩展

借助 Amazon Redshift,您可以监控和管理并发扩展,从而优化数据仓库工作负载的性能和成本效益。并发扩展允许 Amazon Redshift 在工作负载需求增加时自动增加集群容量,并在需求减少时移除该容量。下一节将提供有关监控 Amazon Redshift 集群并发扩展的指导。

您可以通过以下方式查看查询运行在主集群还是并发扩展集群上:在 Amazon Redshift 控制台中,导航到集群,选择一个集群。然后选择查询监控选项卡和工作负载并发以查看有关正在运行的查询和排队查询的信息。

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

SELECT w.service_class AS queue , CASE WHEN q.concurrency_scaling_status = 1 THEN 'concurrency scaling cluster' ELSE 'main cluster' END as 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;

根据您的要求调整 starttimeendtime 值。

并发扩展系统视图

通过 Amazon Redshift,您可以使用并发扩展系统视图来监控和管理集群中的并发扩展活动。下一节将介绍如何查询这些系统视图并解释结果,以便在 Amazon Redshift 环境中有效利用并发扩展。

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

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

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

有关并发扩展的更多信息,请参阅《Amazon Redshift 管理指南》中的以下主题。