Doris进阶——物化视图

物化视图

物化视图就是预先存储查询结果,说白了就是将查询结果或者多个表join的结果存起来,提高查询效率和复用性。

在Doris中就是将查询结果预先存在来的表,建立在Base表上,独立存储。

物化视图的适用场景,来源 Doris官网:

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

物化视图的特点:

  • 对于固定报表的查询,或者经常使用固定的子查询等,能够很好的提高查询效率。
  • 系统自动维护物化视图表,和Rollup一样,都是建立在Base表上,会自动同步Base表的数据更新等操作。
  • 自动匹配最优物化视图。

物化视图和Rollup:

物化视图覆盖了Rollup的全部功能,相当于Rollup的超集,弥补了Rollup无法对明细数据模型进行预聚合的短板。物化视图支持丰富的聚合函数。

Doris目前只支持物化视图的单表创建,不支持表join的方式创建。

创建物化视图:

  • 结合多个查询的分组和聚合方式将物化视图抽象出来,能够提高物化视图的性价比,提高复用性。
  • 不需要给所有的维度组合都创建物化视图,物化视图是独立存储的,所以会占用磁盘资源,而且只需要给常用的维度组合创建就行。
  • 具体关于语法可通过:HELP CREATE MATERIALIZED VIEW
  • 创建物化视图一般分为三个步骤:创建物化视图、检查是否创建完成、查询并自动匹配。
    • 创建物化视图命令:CREATE MATERIALIZED VIEW AS SELECT * FROM TABLE;
    • 检查是否创建成功:SHOW ALTER TABLE MATERIALIZED VIEW FROM db_name;
  •  
  • 查看表属性:DESC TABLE ALL;
  • Doris进阶——物化视图_第1张图片
  •  执行查询:通过explain语法查看执行计划图
  • Doris进阶——物化视图_第2张图片

 查询自动匹配:查询自动匹配分为最优路径选择和查询改写两步骤

  • 最优路径选择:首先会对物化视图集进行过滤,对where后涉及到的数据是否能从物化视图中得到,然后看分组后的字段是否在物化视图的列中出现,最后根据前缀索引是否能匹配到进行判断,最后选出最优的物化视图。
  • 查询改写:比如经常会有对PV 、UV 进行count(distinck)的计算,那么会将count(distinck) 改写为 bitmap_union

物化视图中支持的聚合函数:

  • SUM 、MAX、MIN、COUNT、BITMAP_UNION、HLL_UNION(去重算法)
  • 物化视图的聚合函数仅支持单列,不支持SUM(a+b)之类。
  • 相同列不同聚合函数不能出现在一张物化视图中。
  • 使用物化视图会失去一部分的维度,所以不支持DELETE语义,需要删除Base表中的数据,然后再创建物化视图。

具体实操案例看官网:Doris官网

你可能感兴趣的:(Doris,笔记,sql,数据库,database,big,data,大数据)