影响查询性能的因素 - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

影响查询性能的因素

有多种因素会影响查询性能。数据、集群和数据库操作的以下方面在查询处理速度方面都很重要。

  • 节点、处理器或切片的数量 – 一个计算节点分为多个切片。节点越多意味着处理器和切片越多,通过跨各个切片并发运行查询的多个部分,可加快查询的处理速度。但是,节点越多也意味着花费越高,因此您需要找到适合系统的成本和性能平衡点。有关 Amazon Redshift 集群架构的更多信息,请参阅数据仓库系统架构

  • 节点类型 – Amazon Redshift 集群可以使用密集存储节点或密集计算节点。密集存储节点类型推荐用于大量数据存储需求,而密集计算节点类型针对性能密集型工作负载进行了优化。每个节点类型提供不同的大小和限制,以帮助您适当扩展集群。节点大小决定了集群中每个节点的存储容量、内存、CPU 和价格。有关节点类型的更多信息,请参阅 Amazon Redshift 定价

  • 数据分配 – Amazon Redshift 根据表的分配方式在计算节点上存储表数据。在执行查询时,查询优化程序根据需要将数据重新分配到计算节点,以执行任何联接和聚合。为表选择正确的分配方式通过将数据放在执行联接之前需要的位置来帮助最大程度地减小重新分配步骤的影响。有关更多信息,请参阅使用数据分配方式

  • 数据排序顺序 – Amazon Redshift 根据表的排序键将表数据按照排序顺序存储在磁盘中。查询优化程序和查询处理器使用有关数据所在的位置的信息来减少需要扫描的数据块数,从而提高查询速度。有关更多信息,请参阅使用排序键

  • 数据集大小 – 集群中的数据量越大,则需要扫描和重新分配的行数也越多,这会降低查询性能。您可以通过定期对数据进行 vacuum 操作和存档,并使用谓词限制查询数据集来缓解此效果。

  • 并发操作 – 同时运行多个操作会影响查询性能。每个操作在可用查询队列中采用一个或多个槽,并使用与这些槽关联的内存。如果其他操作正在运行,则可能没有充足的查询队列槽可用。在这种情况下,查询必须等待槽打开,然后才能开始处理。有关创建和配置查询队列的更多信息,请参阅实施工作负载管理

  • 查询结构 – 查询的编写方式将影响其性能。在满足需求的情况下,请尽量编写查询以处理和返回尽量少的数据。有关更多信息,请参阅Amazon Redshift设计查询的 最佳实践

  • 代码编译 – Amazon Redshift 为每个查询执行计划生成和编译代码。

    编译后的代码运行速度更快,因为它消除了使用解释器的开销。通常,首次生成和编译代码时会产生一些开销。因此,首次运行查询时的性能可能会造成误导。运行一次性查询时,此开销可能尤其明显。再次运行查询以确定其典型性能。Amazon Redshift 使用无服务器编译服务将查询编译扩展到 Amazon Redshift 集群的计算资源之外。编译后的代码段将缓存在集群上本地,并缓存在几乎无限的缓存中。此缓存在集群重启后保留。同一查询的后续执行运行速度更快,因为它们可以跳过编译阶段。缓存在 Amazon Redshift 版本中不兼容,因此,当查询在版本升级后运行时,将重新编译代码。通过使用可扩展的编译服务,Amazon Redshift 能够并行编译代码,以始终提供快速性能。工作负载加速的幅度取决于查询的复杂性和并发性。