物化视图概述
背景介绍
HetuEngine具备物化视图能力。在实际运用中,将高频访问的SQL查询和有高耗时的算子(连接, 聚合等算子)的SQL通过建立物化视图进行预计算,然后在查询的SQL中将能匹配到物化视图的查询或者子查询转换为物化视图,避免了数据的重复计算,这种情况下往往能较大地提高查询的响应效率。
物化视图通常基于对数据表进行聚合和连接的查询结果创建。
物化视图支持“查询重写”,这是一种优化技术,即将基于原始表编写的查询语句转换为查询一个或多个物化视图语句的等效请求。如下物化视图的SQL示例:
create materialized view mv.default.mv1 with(storage_table='hive.default.mv1') AS select id from hive.mvschema.t1;
该物化视图实际数据的存储表为“hive.default.mv1”,在查询重写时,查询SQL“select id from hive.mvschema.t1”会被重写成查询物化视图的表,即“select id from hive.default.mv1”。
使用场景
与普通的视图相比,物化视图会存储实际数据,占用存储资源,并且会有预计算带来的数据滞后性的问题,因此物化视图推荐在如下场景中使用:
- 执行频次高的查询。
- 查询包含非常耗时的操作,比如聚合、连接操作等。
- 对查询结果数据可以允许有一定的滞后性。
- 物化视图仅支持对接共部署Hive和外接Hive数据源,并且数据源表的存储格式为ORC或者PARQUET,不支持跨源跨域场景。
权限介绍
物化视图权限如表1。物化视图权限控制依赖Ranger,若关闭Ranger鉴权会带来权限失效的风险。
操作 |
catalog mv权限 |
物化视图存储表的权限 |
原始物理表的权限 |
---|---|---|---|
创建物化视图 |
表的Create权限 |
NA |
对应列的查询权限 |
删除物化视图 |
删除表权限 |
NA |
NA |
刷新物化视图 |
表的更新权限 |
NA |
对应列的查询权限 |
修改物化视图属性或状态 |
表的Alter权限 |
NA |
NA |
使用物化视图重写查询语句 |
NA |
NA |
对应列的查询权限 |
使用物化视图重写查询语句的执行计划(EXPLAIN) |
NA |
对应列的查询权限 |
对应列的查询权限 |
查询物化视图 |
对应列的查询权限 |
NA |
NA |
物化视图和非物化视图的物理表联合查询 |
对应列的查询权限 |
NA |
对应列的查询权限 |
查看物化视图 |
NA |
NA |
NA |
查看物化视图的创建语句 |
表的Show权限 |
表的Show权限 |
NA |
使用介绍
阶段 |
说明 |
参考章节 |
---|---|---|
物化视图SQL示例 |
介绍物化视图支持的操作,包括创建物化视图、列举物化视图、查询物化视图等 |
|
配置物化视图改写能力 |
开启物化视图能力,提高查询的响应效率 |
|
配置物化视图推荐能力 |
自动学习并推荐对业务最有价值的物化视图SQL,使在线查询效率获得倍数提升,同时有效降低系统负载压力 |
|
配置物化视图缓存能力 |
可将多次执行并改写后的SQL保存到缓存中,再次执行这条SQL时会直接从缓存中获取改写后的SQL,而不是重新对SQL进行改写,提高查询效率 |
|
配置物化视图有效期与数据刷新 |
|
|
配置智能物化视图 |
提供自动化物化视图的创建,无需手动执行SQL创建物化视图(推荐使用) |
|
查看物化视图自动化任务记录 |
看任务执行情况,帮助评估集群运行健康状况 |