Doris之物化视图

物化视图是将预先计算(根据定义好的 SELECT 语句)好的数据集,存储在 Doris 中的一个特殊的表。

物化视图的出现主要是为了满足用户,既能对原始明细数据的任意维度分析,也能快速的对固定维度进行分析查询。

适用场景

分析需求覆盖明细数据查询以及固定维度查询两方面。
查询仅涉及表中的很小一部分列或行。
查询包含一些耗时处理操作,比如:时间很久的聚合操作等。
查询需要匹配不同前缀索引。

优势

对于那些经常重复的使用相同的子查询结果的查询性能大幅提升。
Doris自动维护物化视图的数据,无论是新的导入,还是删除操作都能保证base 表和物化视图表的数据一致性。无需任何额外的人工维护成本。
查询时,会自动匹配到最优物化视图,并直接从物化视图中读取数据。
自动维护物化视图的数据会造成一些维护开销,会在后面的物化视图的局限性中展开说明。

物化视图 VS Rollup

在没有物化视图功能之前,用户一般都是使用 Rollup 功能通过预聚合方式提升查询效率的。但是 Rollup 具有一定的局限性,他不能基于明细模型做预聚合。

物化视图则在覆盖了 Rollup 的功能的同时,还能支持更丰富的聚合函数。所以物化视图其实是 Rollup 的一个超集。

也就是说,之前 ALTER TABLE ADD ROLLUP 语法支持的功能现在均可以通过 CREATE MATERIALIZED VIEW 实现。

使用物化视图

Doris 系统提供了一整套对物化视图的 DDL 语法,包括创建,查看,删除。DDL 的语法和 PostgreSQL, Oracle都是一致的。

局限性

物化视图的聚合函数的参数不支持表达式仅支持单列,比如: sum(a+b)不支持。

如果删除语句的条件列,在物化视图中不存在,则不能进行删除操作。如果一定要删除数据,则需要先将物化视图删除,然后方可删除数据。

单表上过多的物化视图会影响导入的效率:导入数据时,物化视图和 base 表数据是同步更新的,如果一张表的物化视图表超过10张,则有可能导致导入速度很慢。这就像单次导入需要同时导入10张表数据是一样的。

相同列,不同聚合函数,不能同时出现在一张物化视图中,比如:select sum(a), min(a) from table 不支持。

物化视图针对 Unique Key数据模型,只能改变列顺序,不能起到聚合的作用,所以在Unique Key模型上不能通过创建物化视图的方式对数据进行粗粒度聚合操作

异常错误

DATA_QUALITY_ERR: “The data quality does not satisfy, please check your data” 由于数据质量问题导致物化视图创建失败。 注意:bitmap类型仅支持正整型, 如果原始数据中存在负数,会导致物化视图创建失败

Doris之物化视图相关推荐

  1. Doris之rollup上卷及物化视图

    Rollup上卷 通过建表语句创建出来的表称为 Base 表(Base Table,基表) 在 Base 表之上,我们可以创建任意多个 ROLLUP 表.这些 ROLLUP 的数据是基于 Base 表 ...

  2. Apache doris物化视图

    Apache Doris 代码仓库地址:apache/incubator-doris 欢迎大家关注加星 物化视图 物化视图是将预先计算(根据定义好的 SELECT 语句)好的数据集,存储在 doris ...

  3. 基于 Impala 的高性能数仓实践之物化视图服务

    本文将主要介绍 NDH Impala 的物化视图实现. 接上篇讲到了虚拟数仓,它们是让一个 SQL 又快又好地执行的关键.但如果某些 SQL 过于复杂,比如多张大表进行 Join 并有大量的聚合类操作 ...

  4. 查询时长下降10倍!网易有数 BI 物化视图设计要点与内部实践

    原文:查询时长下降10倍!网易有数 BI 物化视图设计要点与内部实践|数据库|sql|网易_新浪新闻 导读众所周知,BI 工具因其灵活的使用方式和便捷的结果展示,已成为生产运营和辅助管理决策的重要工具 ...

  5. Oracle物化视图

    物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语 ...

  6. 创建物化视图commit_oracle 中物化视图讲解

    oracle 中物化视图讲解 oracle中的物化视图首先需要创建物化视图日志,oracle根据用户创建的物化视图日志来创建物化视图日志表,物化视图日志表名称为mlog$_基表名,如果表名超过20位, ...

  7. Oracle之物化视图

    近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相 ...

  8. oracle雾化试图_Oracle创建物化视图

    Oracle创建物化视图 通过Oracle物化视图章节,我们已经了解到Oracle物化视图的作用和创建原理,本节通过实例详细讲解Oracle是如何创建物化视图的. 创建物化视图语法: 语法:creat ...

  9. 物化视图基于rowID快速刷新

    --1创建log create MATERIALIZED VIEW LOG ON gh_qyghgx WITH rowid; create MATERIALIZED VIEW LOG ON gh_qy ...

最新文章

  1. Android Json解析方法
  2. sizeof和strlen解析
  3. VTK:PolyData之ThresholdPoints
  4. Spring中的后置处理器BeanPostProcessor讲解
  5. KVM虚拟机相关步骤
  6. 《鸿蒙理论知识04》HarmonyOS概述之系统定义
  7. 苹果电脑更改sd卡只读_SD卡变为只读系统
  8. N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)
  9. Redis学习---Redis操作之String
  10. [Java] 蓝桥杯ADV-171 算法提高 身份证号码升级
  11. jquery的mCustomScrollbar滚动条创建在ie8下报frameElement的相关错
  12. Java判断是否为素数
  13. 数字阵列麦克风处理技术概述
  14. sql 给字段设置默认值,
  15. 基于层次分析法(AHP)的信贷案例详解
  16. 中国象棋AI在线弈游戏源码
  17. aimesh r6400 开_r6900+r6300v2 aimesh 连接成功!点滴分享
  18. 7-47 打印选课学生名单 (25分)C++
  19. 【阅读总结】Xen and the Art of Virtualization
  20. Metasploit终端下的辅助扫描工具 (auxiliary模块讲解)

热门文章

  1. 如何安装python_怎么在Windows操作系统下安装Python和Networkx
  2. centos 7 开放指定端口
  3. 初识ObjectBox--Android平台
  4. 中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
  5. java调c 申请内存_JAVA简单调用C/C++语言(JNI学习三)
  6. 【李宏毅2020 ML/DL】P106 More about Life Long Learning
  7. 【汇编语言与计算机系统结构笔记13】简单的上机过程示例
  8. shell处理curl返回数据_linux shell中curl 发送post请求json格式问题的处理方法
  9. uricode(GET参数) 转 object
  10. python基础: day4作业计算器