高斯DB的物化视图

举报
Hans 发表于 2024/04/27 23:39:23 2024/04/27
【摘要】 1、物化视图概述物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所执行语句的结果,起到缓存的效果。  2、高斯DB物化视图2.1、高斯DB物化视图的分类物化视图在GaussDB数据库中有两种表现形式,分别是全量物...

1、物化视图概述

物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。

普通视图是虚拟表,应用的局限性大,任何对视图的查询,实际上都是转换为对SQL语句的查询,性能并没有实际上提高。而物化视图实际上就是存储SQL所执行语句的结果,起到缓存的效果。  

2、高斯DB物化视图

2.1、高斯DB物化视图的分类

物化视图在GaussDB数据库中有两种表现形式,分别是全量物化视图和增量物化视图。

2.1.1、全量物化视图

全量物化视图仅支持对创建好的物化视图做全量更新,而不支持做增量更新。创建全量物化视图语法和CREATE TABLE AS语法一致,不支持对全量物化视图指定NodeGroup创建。

2.1.2、增量物化视图

增量物化视图顾名思义就是可以对物化视图增量刷新,需要用户手动执行语句完成对物化视图在一段时间内的增量数据进行刷新。与全量创建物化视图不同在于目前增量物化视图所支持场景较小,目前物化视图创建语句仅支持基表扫描语句或者UNION ALL语句。

2.2、物化视图语法

  • 创建全量物化视图
    CREATE MATERIALIZED VIEW [ view_name ] AS { query_block }; 
  • 刷新全量物化视图
    REFRESH MATERIALIZED VIEW [ view_name ];
  • 删除物化视图
    DROP MATERIALIZED VIEW [ view_name ];
  • 查询物化视图
    SELECT * FROM [ view_name ];

2.3、物化视图的限制与约束

2.3.1 全量物化视图的限制与约束

  • 全量物化视图不支持NodeGroup:创建全量物化视图所使用的基表必须在所有DN上有定义,基表所属nodegroup必须为installation group。
  • 不可对物化视图做增删改操作,只支持查询语句。
  • 全量物化视图的刷新、删除过程中会给基表加高级别锁,若物化视图的定义涉及多张表,需要注意业务逻辑,避免死锁产生。

2.3.2 增量物化视图的限制与约束

  • 物化视图中不支持带Stream计划,多表join连接计划以及subquery计划。
  • 除少部分ALTER操作外,不支持对物化视图中基表做绝大多数DDL操作。
  • 创建物化视图不可指定物化视图分布列。
  • 不可对物化视图做增删改操作,只支持查询语句。
  • 不支持用临时表/hashbucket/unlog/分区表创建物化视图,只支持hash分布表。
  • 不支持物化视图嵌套创建(物化视图上创建物化视图)。
  • 仅支持行存表,不支持列存表。
  • 不支持UNLOGGED类型的物化视图,不支持WITH语法。

2.4、不足与注意事项

2.4.1、物化视图的不足

  • 首先,物化视图需要占用额外的存储空间来存储查询结果,可能会增加数据库的维护成本。
  • 其次,物化视图可能无法实时更新,不适应实时性要求非常高的业务。
  • 此外,物化视图的创建和维护需要一定的计算资源和时间成本,对于大规模数据集和高并发查询场景可能存在一定的性能压力。

2.4.2、物化视图注意事项

  • 需要充分考虑物化视图数据来源的准确性和完整性。
  • 需要定期评估物化视图的使用效果和系统性能,根据业务变化及时进行调整和优化。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。