地址: 海口市六霉街488号 邮箱: unrecognizable@yahoo.com 工作时间:上午9点-下午8点

项目展示

  • 首页
  • Our Portfolio
  • 提高包含重复扫描过滤器的工作负载性能:在 Amazon Redshift 中使用多维数据布局排序键

提高包含重复扫描过滤器的工作负载性能:在 Amazon Redshift 中使用多维数据布局排序键

2026-01-27 14:19:01

提升 Amazon Redshift 中包含重复扫描过滤条件的工作负载性能

关键要点

本文探讨了如何通过在 Amazon Redshift 中使用多维数据布局排序键来大幅提升查询性能,特别是针对包含重复扫描过滤条件的工作负载。这一新特性使得查询可以依照过滤谓词对表中的数据进行排序,而不仅仅是物理列,大幅提升了表扫描的效率。

Amazon Redshift 是一个广泛使用的云数据仓库,经历了显著的演变,以满足最苛刻工作负载的性能需求。本文介绍了其中一个新特性多维数据布局排序键。

通过支持多维数据布局排序键,Amazon Redshift 现在能够改善您的查询性能。这是一种新的排序键类型,它按照过滤谓词对表数据进行排序,而不是对表的物理列进行排序。这种多维数据布局排序键能够显著提高表扫描的性能,特别是在您的查询工作负载包含重复扫描过滤条件时。

Amazon Redshift 已经提供了自动表优化(ATO)的功能,可以在无需管理员干预的情况下,通过应用排序和分布键自动优化表的设计。本文将多维数据布局排序键作为 ATO 提供的附加功能,结合 Amazon Redshift 的排序键建议算法进行介绍。

多维数据布局排序键

当您使用 AUTO 排序键定义表时,Amazon Redshift ATO 将分析您的查询历史,并自动选择单列排序键或多维数据布局排序键,具体取决于哪个选项更适合您的工作负载。当选择多维数据布局时,Amazon Redshift 将构建一个多维排序函数,该函数将通常由相同查询访问的行共同定位,随后在查询运行期间使用该排序函数跳过数据块,甚至跳过单独谓词列的扫描。

考虑以下用户查询,这是用户工作负载中的主导查询模式:

sqlSELECT season sum(metric2) AS measure0FROM titlesWHERE lower(subregion) LIKE united statesGROUP BY 1ORDER BY 1

Amazon Redshift 为每列以 1 MB 的磁盘块存储数据,并将每个块中的最小值和最大值作为表元数据的一部分。如果查询使用范围限制谓词,Amazon Redshift 可以利用最小值和最大值快速跳过大量块。然而,该查询对 subregion 列的过滤无法根据最小值和最大值确定要跳过的块,因此 Amazon Redshift 扫描了 titles 表中的所有行:

sqlSELECT tablename inputrows stepattributeFROM sysquerydetailWHERE queryid = 123456789

当用户的查询在 titles 表上使用基于 subregion 的单列排序键时,上述查询的结果如下:

plaintext tablename inputrows stepattribute titles 2164081640 (1 rows)

这表明表扫描读取了 2164081640 行。

为了提高对 titles 表的扫描性能,Amazon Redshift 可能会自动决定使用多维数据布局排序键。满足 lower(subregion) LIKE united states 条件的行将被放置在表的专用区域,因此 Amazon Redshift 仅会扫描满足该条件的数据块。

当用户的查询在 titles 表上使用包含 lower(subregion) LIKE united states 的多维数据布局排序键时,sysquerydetail 查询的结果如下:

plaintext tablename inputrows stepattribute titles 152324046 multidimensional (1 rows)

提高包含重复扫描过滤器的工作负载性能:在 Amazon Redshift 中使用多维数据布局排序键

这表明表扫描读取了 152324046 行,仅占原数据的 7,并且使用了多维数据布局排序键。

注意,这个例子使用了一个查询来展示多维数据布局的特性,但 Amazon Redshift 会考虑对该表运行的所有查询,并可以创建多个区域以满足最常用的 predicates。

让我们再举一个例子,这次涉及更复杂的谓词和多个查询。

设想有一个表 items (cost int available int demand int),包含以下四行数据:

idcostavailabledemand14332223635454112

您的主要工作负载由两个查询构成:

70的查询模式:

sqlSELECT FROM items WHERE cost gt 3 AND available lt demand

20的查询模式:

sqlSELECT avg(cost) FROM items WHERE available lt demand

使用传统排序技术,您可能会选择在 cost 列上排序,以使得 cost gt 3 的评估能够受益于排序。因此,经过单列 cost 排序后的 items 表将如下所示:

idcostavailabledemandRegion #1 with cost lt= 3Region #2 with cost gt 341122223614333545

使用这种传统排序,可以立即排除 ID 为 4 和 2 的前两行蓝色行,因为它们不满足 cost gt 3 的条件。

而使用多维数据布局排序键时,表将基于用户工作负载中两个常见谓词的组合进行排序,即 cost gt 3 和 available lt demand。因此,表的行被排序到四个区域。

idcostavailabledemandRegion #1 with cost lt= 3 and available lt demandRegion #2 with cost lt= 3 and available gt= demandRegion #3 with cost gt 3 and available lt demandRegion #4 with cost gt 3 and available gt= demand41122223635451433

当应用于整个数据块而非单行时,该概念的效果更为显著,尤其是处理不适合传统排序技术的运算符如 LIKE和多个谓词时。

系统表

以下 Amazon Redshift 系统表可让用户查看是否在其表和查询中使用了多维数据布局:

要判断特定表是否使用多维数据布局排序键,您可以检查 svvtableinfo 中的 sortkey1 是否等于 AUTO(SORTKEY(padbinternalmddlkeycol))。要确定特定查询是否使用了多维数据布局来加快表扫描,您可以在 sysquerydetail 视图中检查 stepattribute。如果在扫描过程中使用了表的多维数据布局排序键,其值将等于 multidimensional。

性能基准

我们对多个具有重复扫描过滤条件的工作负载进行了内部基准测试,发现引入多维数据布局排序键获得了以下结果:

与没有排序键相比,总运行时间减少了74。与每个表上最佳单列排序键相比,总运行时间减少了40。与没有排序键相比,表中读取的总行数减少了80。与每个表上最佳单列排序键相比,表中读取的总行数减少了47。

功能比较

通过引入多维数据布局排序键,您的表现在可以按照工作负载中常见的过滤谓词的表达式进行排序。以下表格提供了 Amazon Redshift 与两个竞争对手的功能比较。

特性Amazon Redshift竞争对手 A竞争对手 B支持按列排序是是是支持按表达式排序是是否自动选择排序列是否是自动选择排序表达式是否否自动选择列排序或表达式排序是否否在扫描期间自动使用排序属性是否否

考虑事项

在使用多维数据布局时,请注意以下事项:

当您将表设置为 SORTKEY AUTO 时,会启用多维数据布局。Amazon Redshift Advisor 将根据您的历史工作负载自动选择单列排序键或多维数据布局来为表排名。Amazon Redshift ATO 根据持续查询与工作负载的交互方式调整多维数据布局排序结果。Amazon Redshift ATO 的维护多维数据布局排序键的方式与当前对现有排序键的维护方式相同。有关 ATO 的更多细节,请参考自动表优化工作。多维数据布局排序键适用于预置集群和无服务器工作组。只要在表上启用 AUTO SORTKEY 并检测到具有重复扫描过滤条件的工作负载,现有数据也可以使用多维数据布局排序键。表将根据多维排序函数的结果进行重新组织。要禁用表的多维数据布局排序键,请使用 ALTER TABLE:ALTER TABLE tablename ALTER SORTKEY NONE。这会禁用表中的 AUTO 排序键功能。在将预置集群恢复或迁移到无服务器集群或反向操作时,保留多维数据布局排序键。

总结

本文展示了多维数据布局排序键可以显著提高针对具有重复扫描过滤条件的工作负载的查询运行时性能。

betternet苹果客户端

要从 Amazon Redshift 控制台创建预览集群,请导航到 Clusters 页面并选择 Create preview cluster。您可以在美国东部俄亥俄州、美国东部北弗吉尼亚州、美国西部俄勒冈州、亚太地区东京、欧洲爱尔兰和欧洲斯德哥尔摩区域创建集群,并测试您的工作负载。

我们期待听到您对这一新特性的反馈,并欢迎您的评论。

关于作者

Milind Oke 是位于纽约的数据仓库专家解决方案架构师。他在数据仓库解决方案开发方面有超过 15 年的经验,专注于 Amazon Redshift。

Jialin Ding 是学习系统组的应用科学家,专注于应用机器学习和优化技术以改善数据系统如 Amazon Redshift的性能。

Yanzhu Ji 是 Amazon Redshift 团队的产品经理。她在业界领先数据产品和平台的产品愿景和战略方面具有丰富的经验,并在使用网络开发、系统设计、数据库和分布式编程技术构建重要软件产品方面具备出色的能力。在个人生活中,Yanzhu 喜欢绘画、摄影和打网球。

加载评论

订阅我们的时事通讯并获取最新消息