Rollup
Doris中通过建表语句创建的表是Base表,也就是基础表,通过建表语句指定大的方式来存储基础数据。
在Base表上可以存储创建多个Rollup表,Rollup表依赖于Base表的数据,且是单独物理存储的,所以创建太多会占用资源空间。
Rollup作用:Rollup是在Base表的基础上获得更粗粒度的聚合数据。在不同数据模型中会有不同的作用。
- Rollup的根本作用就是提升某些查询的查询效率,也称为物化索引。
- Rollup属于Base表,Base表可以增删Rollup,Rollup完全和Base表同步更新,Base表数据发生变化,Rollup也会跟随Base表变化。
- Rollup完全独立存储,因此要考虑存储问题。
- Rollup中的聚合方式也和Base表完全一致,创建Rollup时无需指定聚合方式,也不能改变原有的聚合方式。
- Rollup的命中条件:查询的所涉及的列必须在Rollup中,否则只能查询Base表。且Rollup会自己实现命中。
Aggregate和Unique中的Rollup:
由于Unique是Aggregate中的一种特殊的形式且底层也是使用Aggregate中的替换函数实现的,所以这里只看Aggregate模型。
示例:
CREATE TABLE IF NOT EXISTS test.aggregate_test1
(
`user_id` LARGEINT NOT NULL COMMENT "用户id",
`city` VAR