自动实体化视图
本主题介绍 Amazon Redshift 如何使用自动实体化视图来提高性能。Amazon Redshift 会根据数据库活动和性能自动创建实体化视图。默认情况下,Amazon Redshift 使用自动实体化视图。
实体化视图是一个提高 Amazon Redshift 查询性能的强大工具。它们通过存储预先计算的结果集来实现这一目的。类似的查询不必每次重新运行相同的逻辑,因为它们可以从现有结果集中检索记录。开发人员和分析师在分析工作负载后创建实体化视图,以确定哪些查询将受益,以及是否值得为每个实体化视图支付维护费用。随着工作负载的增长或变化,必须对这些实体化视图进行审查,以确保它们继续提供显著的性能优势。
Redshift 中的自动实体化视图 (AutoMV) 功能提供了与用户创建的实体化视图相同的性能优势。Amazon Redshift 使用机器学习持续监控工作负载,并在它们有用的情况下创建新的实体化视图。AutoMV 在创建实体化视图并保持最新状态的成本与查询延迟的预期益处之间实现平衡。系统还监控以前创建的 AutoMV,并在它们不再有用时将它们丢弃。
AutoMV 的行为和功能与用户创建的实体化视图的相同。它们使用相同的标准和限制自动递增刷新。与用户创建的实体化视图一样,自动查询重写以使用实体化视图识别可受益于系统创建的 AutoMV 的查询。它会自动重写这些查询以使用 AutoMV,从而提高查询性能。开发人员无需修订查询即可利用 AutoMV。
注意
自动实体化视图会间歇性刷新。重写查询以使用 AutoMV 始终会返回最新结果。当 Redshift 检测到数据不是最新时,不会将查询重写为从自动实体化视图读取。相反,查询会从基表中选择最新数据。
任何重复使用的查询的工作负载都可受益于 AutoMV。常见使用案例包括:
控制面板 – 控制面板广泛用于快速查看关键业务指标 (KPI)、事件、趋势和其它指标。它们通常具有包含图表和表格的通用布局,但会针对筛选或维度选择操作(如向下钻取)显示不同的视图。控制面板通常有一组重复使用不同参数的常用查询。控制面板查询可极大地受益于自动实体化视图。
-
报告 – 根据业务要求和报告类型,可以以不同频率计划报告查询。此外,可以自动查询,也可按需查询。报告查询的一个共同特征是它们可能会长时间运行并占用大量资源。借助 AutoMV,这些查询不需要在每次运行时重新计算这些查询,从而减少 Redshift 中每个查询的运行时间和资源利用率。
要关闭自动实体化视图,请将 auto_mv
参数组更新为 false
。有关更多信息,请参阅《Amazon Redshift 集群管理指南》中的 Amazon Redshift 参数组。
自动实体化视图的 SQL 作用域和注意事项
自动实体化视图可以由查询或子查询启动和创建,前提是它包含
GROUP BY
子句或下列聚合函数之一:SUM、COUNT、MIN、MAX 或 AVG。但它不能包含以下任何内容:Left、right 或 full outer 联接
SUM、COUNT、MIN、MAX 和 AVG 之外的聚合函数。(这些特定函数适用于自动查询重写。)
任何包含 DISTINCT 的聚合函数
任意窗口函数
SELECT DISTINCT 或 HAVING 子句
其他实体化视图
无法保证满足条件的查询将启动自动实体化视图的创建。系统根据其对工作负载的预期好处和资源维护成本(包括系统更新成本)来确定从哪个候选项创建视图。每个生成的实体化视图可通过自动重写查询来使用。
即使 AutoMV 可能由子查询或集合运算符的各个分支启动,生成的实体化视图也不包含子查询或集合运算符。
要确定 AutoMV 是否用于查询,请查看 EXPLAIN 计划并在输出中查找
%_auto_mv_%
。有关更多信息,请参阅 EXPLAIN。外部表(如数据共享和联合表)不支持自动实体化视图。
自动实体化视图的限制
以下是使用自动实体化视图的限制:
最大 AutoMV 数 – 集群中每个数据库的自动实体化视图数的上限为 200 个。
存储空间和容量 – AutoMV 的一个重要特征是,使用备用后台周期执行它以帮助实现用户工作负载不受影响。如果集群繁忙或存储空间不足,AutoMV 将停止其活动。具体来说,在总集群容量达到 80% 时,不会创建新的自动实体化视图。在总容量达到 90% 时,可能会删除它们,以方便用户工作负载继续运行,而不会降低性能。有关确定集群容量的更多信息,请参阅 STV_NODE_STORAGE_CAPACITY。
自动实体化视图的计费
Amazon Redshift 的自动优化功能可创建和刷新自动实体化视图。对于此过程不收取计算资源费用。自动实体化视图的存储按常规存储费率收费。有关更多信息,请参阅 Amazon Redshift 定价
其他 资源
以下博客文章进一步解释了自动实体化视图。其中详细说明了如何创建、维护和删除它们。还解释了推动这些决策的基础算法:使用自动实体化视图优化 Amazon Redshift 查询性能
该视频首先解释了实体化视图,并展示了它们如何提高性能和节约资源。然后,它通过过程流动画和实况演示对自动实体化视图进行了深入的解释。