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

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

影响查询性能的因素

许多因素可能会影响查询性能。数据、群集和数据库操作的以下几个方面都对查询处理速度有影响。

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

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

  • 数据分配 – Amazon Redshift 根据表的分配方式在计算节点上存储表数据。当您执行查询时,查询优化器会根据需要将数据重新分配到计算节点以执行任何联接和聚合。为表选择正确的分布样式有助于在联接之前找到需要的数据,从而将再分布步骤的影响降至最低。有关更多信息,请参阅 选择数据分配方式。)

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

  • 数据集大小 – 集群中的数据量越大,则需要扫描和重新分配的行数也越多,这会降低查询性能。您可以通过定期真空处理和数据存档,并使用谓词限制查询数据集来减轻这种影响。

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

  • 查询结构 – 如何编写您的查询会影响其性能。尽可能多地编写查询以处理并返回尽可能少的数据,以满足您的需求。有关更多信息,请参阅 Amazon Redshift best practices for designing queries。)

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

    编译后的代码运行更快,因为它消除了使用口译员的开销。通常您有一部分开销成本,第一次生成和编译代码。因此,首次运行查询时的性能可能会造成误导。当您运行一次性查询时,间接费用成本可能尤其明显。再次运行查询以确定其典型性能。 Amazon Redshift 使用无服务器编译服务来扩展查询编译,超出 Amazon Redshift 群集。编译后的代码段在群集上本地和几乎无限制的cache中被cache。群集重新启动后,此cache仍然存在。后续执行相同查询的速度更快,因为它们可以跳过编译阶段。不同位置之间不相容 Amazon Redshift 版本,以便在版本升级后运行查询时重新编译代码。通过使用可扩展的编译服务, Amazon Redshift 能够并行编译代码,提供始终如一的快速性能。工作量的加速程度取决于查询的复杂性和并发性。