【AI4DB】Amazon Redshift AutoMV,亚马逊Redshift自动物化视图

Amazon Redshift AutoMV

Amazon Redshift AutoMV简介:

物化视图是Amazon Redshift中提高查询性能的强大工具。它们通过存储预先计算的结果集来实现这一点。类似的查询不必每次都重新运行相同的逻辑,因为它们可以从现有的结果集中检索记录。开发人员和分析人员在分析他们的工作负载后创建物化视图,以确定哪些查询将受益,以及每个物化视图的维护成本是否值得。随着工作负载的增长或变化,必须对这些物化视图进行检查,以确保它们继续提供切实的性能优势。

Redshift中的自动物化视图(AutoMV)特性提供了与用户创建物化视图相同的性能优势。Amazon Redshift使用机器学习持续监控工作负载,并在有益的时候创建新的物化视图。AutoMV平衡了创建和保持物化视图最新的成本与预期的查询延迟的好处。该系统还会监控之前创建的自动驾驶汽车,并在它们不再有用时将其丢弃。

AutoMV的行为和功能与用户创建的物化视图相同。使用相同的标准和限制,自动地、增量地刷新它们。就像用户创建的实体化视图一样,使用实体化视图的自动查询重写确定了可以从系统创建的automv中受益的查询。它会自动重写这些查询以使用automv,从而提高查询性能。开发人员不需要修改查询来利用AutoMV。

Amazon Redshift是一个快速的、完全托管的云数据仓库数据库,Amazon Redshift允许您分析结构化和半结构化数据

自动物化视图会间歇性地刷新。使用AutoMV重写的查询总是返回最新的结果。当Redshift检测到数据不是最新的,查询不会被重写以从自动物化视图中读取。相反,查询从基表中选择最新的数据。

缺点:

  • 即使AutoMV可能由子查询或集合操作符的单个分支发起,生成的物化视图也不会包含子查询或集合操作符。

  • 自动物化视图可以通过查询或子查询发起和创建,只要它包含GROUP by子句或以下聚合函数之一:SUM, COUNT, MIN, MAX或AVG,但它不能包含以下任何内容:

    (1)左、右或全外连接

    (2)聚合除SUM、COUNT、MIN、MAX和AVG以外的函数(这些特定的函数与自动查询重写一起工作)。

    (3)任何包含DISTINCT的聚合函数

    (4)任意窗口函数

    (5)选择DISTINCT或HAVING子句

    (6)外部表,如数据共享和联邦表

    (7)其他物化视图

谓词提升(predicate elevation):

其实就是在提取物化视图的同时,将谓词提出来作为SELECT和GROUP BY后的列,这样其实就是并不将过滤条件作为物化视图的一部分,能一定程度上提高覆盖率。

SELECT o.o_orderdate
      ,o.o_orderpriority
      ,l.l_shipmode
      ,SUM(l.l_extendedprice)
FROM orders o
INNER JOIN lineitem l
   ON o.o_orderkey = l.l_orderkey
GROUP BY o.o_orderdate
        ,o.o_orderpriority
        ,l.l_shipmode;

官方提到的自动物化视图的限制

  • automv的最大数量——集群中每个数据库的自动化物化视图的限制是200个。
  • 存储空间和容量——AutoMV的一个重要特征是,它使用空闲的后台周期来执行,以帮助实现用户工作负载不受影响。如果集群繁忙或存储空间耗尽,AutoMV将停止其活动。具体来说,在集群总容量的80%时,不会创建新的自动化物化视图。在占总容量的90%时,可以减少它们,以便在不降低性能的情况下继续用户工作负载。有关确定集群容量的更多信息,请参见STV_NODE_STORAGE_CAPACITY。

设计物化视图系统需要考虑的问题:

  • 分析系统上运行的查询

  • 确定定期运行哪些查询并提供业务利益

  • 确定已识别查询的优先级

  • 确定性能改进是否值得创建物化视图并存储数据集

  • 物理创建和刷新物化视图

  • 监控物化视图的使用情况

  • 正在删除很少使用或从未使用过的物化视图,或者由于基表的结构发生变化而无法刷新

总结的Amazon特点:

  • 单表 or 多表?支持多表的物化视图——案例中得知
  • 基表的结构发生变化,视图无法使用
  • 只支持带GROUP BY和SUM, COUNT, MIN, MAX or AVG五种聚合函数的视图
  • demo视频里针对tpc-h数据集,数据集sql仅22条且相对简单
  • AutoMV针对一批输入查询创建MV,第二批查询进来时根据上一批创建的视图匹配能否改写,似乎并没有提到将这两批数据合并生成视图。第二批查询进来时有没有结合第一批的数据进行AI训练和推荐。

参考链接:

猜你喜欢

转载自blog.csdn.net/aruewds/article/details/130874374
今日推荐