目录
注:本篇文章阐述的是StarRocks-3.2版本的物化视图相关内容。
一、视图
1.1 视图定义
StarRocks也拥有视图功能,且其与MySQL中的视图概念及语法非常类似。StarRocks中的视图也是一种虚拟存在的表,其行和列的数据来自定义视图查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。
1.2 视图优势
- 重用sql语句;
- 简化复杂的sql操作,不必知道它的查询细节;
- 保护数据,提高安全性。
1.3 视图创建
创建视图的语法与MySQL的语法基本一致:
#创建视图的语法
create view view_name as select_statement;
#1.创建视图的例子
create view myv1 as
select device_code,
device_price,
total
from table01 a
join table02 b
on a.user_id = b.user_id;
#2.查询视图的例子
select * from myv1;
#3.修改视图的语法
alter view view_name
As select_statement;
#修改视图的例子
alter view myv1 as
select device_code,
device_price,
total
from table01 a
join table02 b
on a.user_id = b.user_id
limit 1;
#删除视图
drop view [if exists] myv1;
#查询视图的定义
show create view myv1;
二、物化视图
2.1 概述
物化视图是在基表之上构建的查询逻辑并将结果持久化存储。在StarRocks中,物化视图对于用户来说是透明的(用户无感知),即用户发生查询的时候,不需要指定物化视图的名称,而是直接查询基表,StarRocks 会决定是否从物化视图读取数据。
物化视图的作用:能针对特定业务的查询(聚合)需求,在基础表(原始数据表)基础上,通过业务聚合(或筛选)逻辑,提供一种以存储空间换取查询效率的数据解决方案。
另一种解释:物化视图是一种典型的空间换时间的思路,其本质是根据预定义的SQL 分析语句执⾏预计算,并将计算结果持久化到另一张对用户透明但有实际存储的表中。在需要同时查询聚合数据和明细数据以及匹配不同前缀索引的场景,命中物化视图时可以获得更快的查询相应,同时也避免了大量的现场计算,因此可以提高性能表现并降低资源消耗。
物化视图的官网地址:
2.2 同步物化视图(Rollup)
2.2.1 概述
同步物化视图,所有对于基表的数据变更都会自动同步更新到物化视图中,不需要手动调用刷新命令。同步物化视图适合实时场景下的单表聚合查询的透明加速。
StarRocks 中的同步物化视图仅能基于单个基表创建,是一种特殊的查询加速索引(本质就是基表的一种索引)。
相关概念有:
- 基表(Base Table)
物化视图的驱动表,StarRocks 支持在明细表、聚合表和更新表上创建同步物化视图。
- 刷新(Refresh)
StarRocks同步物化视图中的数据将在数据导入基表时自动更新,无需手动调用刷新命令。
- 查询改写(Query Rewrite)
查询改写是指在已构建了物化视图的基表尽心进行查询时,系统自动判断是否可以复用物化视图中预计算结果的处理查询。如果可以复用,系统会直接从相关的物化视图

最低0.47元/天 解锁文章
2762

被折叠的 条评论
为什么被折叠?



