前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Doris rollup介绍

Doris rollup介绍

作者头像
用户1217611
发布于 2022-10-04 13:43:44
发布于 2022-10-04 13:43:44
78800
代码可运行
举报
文章被收录于专栏:文渊之博文渊之博
运行总次数:0
代码可运行

Rollup

  •     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模型。

建模示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE IF NOT EXISTS testdb.testtb
(
    `id` BIGINT NOT NULL DEFAULT '0' COMMENT 'id',
    `shop` BIGINT NOT NULL DEFAULT '0' COMMENT 'shop',
    `city` BIGINT NOT NULL DEFAULT '0' COMMENT 'city',
    `bizdate` date NOT NULL  COMMENT 'bizdate',
    `gmv` DECIMAL(20,4) REPLACE NOT NULL  DEFAULT '0.0000' COMMENT 'gov产出',
    `update_time` DATETIME REPLACE NOT NULL COMMENT '更新时间',
    `create_time` DATETIME REPLACE NOT NULL COMMENT '创建时间',
    `id` BIGINT REPLACE NOT NULL DEFAULT '0' COMMENT '主键'
)
ENGINE=olap
AGGREGATE KEY(`bizdate`,`city`, `shop`)
PARTITION BY RANGE(`bizdate`)()
DISTRIBUTED BY HASH(`city`)
PROPERTIES
(
    "replication_num"="1",
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start"="-7",
    "dynamic_partition.end"="3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "8",
    "dynamic_partition.start_day_of_day" = "1"
);

命令:

    查看表结构信息 :DESC TABLE ALL;

    添加 Rollup 表(需要查看用户的总消费):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER TABLE testtb ADD ROLLUP rollup_shop (shop,gmv);

    可以通过EXPLAIN来查看执行计划图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
EXPLAIN SELECT  shop, sum(gmv) FROM testtb;

    查看Rollup是否创建成功:SHOW ALTER TABLE ROLLUP;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
查看明细查询执行计划:explain select shop,gmv from testtb;
     
查看聚合查询执行计划:
explain select shop, sum(gmv) from testtb

Duplicate模型中的Rollup:

由于Duplicate模型中没有前缀索引,因此,只能使用Rollup进行列调整,来命中前缀索引。

前缀索引:

  • Doris和传统数据库不同,Doris这种MPP架构的数据库不支持在任意列上创建索引。
  • Doris的数据存储在SSTable这种数据结构上,该数据结构以排序列作为条件查询会非常高效。
  • 前缀索引就是在列排序的基础上,根据给定前缀列,快速查询数据的索引方式。
  • 前缀索引的设置,将一行数据的前36字节作为当前行的前缀索引,在遇到VARCHAR数据类型会前缀索引会直接截断。
  1.     比如一张表中的字段和数据类型是:uid BIGINT , age INT , name VARCHAR(50)
  2.     那么这张表的前缀索引就是:uid (8 byte) + age (4 byte)  + name (20 byte)
  3.     比如这张表的字段和数据类型顺序是:name VARCHAR(50) ,uid BIGINT , age INT
  4.     那么这张表的前缀索引是:name(20byte) 会从一开始就截断

在查询时使用前缀索引的前缀进行查询会极大的提高查询效率

通过Rollup实现前缀索引的列排序:

可以通过在Base表上添加Rollup的方式重新调整列的排序,来达到调整前缀索引的目的。

而且在查询时还会优先匹配Rollup,因为前缀索引匹配度高

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
硬刚Doris系列」Apache Doris基本使用和数据模型
我们使用 event_day 列作为分区列,建立3个分区: p201706, p201707, p201708
王知无-import_bigdata
2022/06/05
2.7K0
硬刚Doris系列」Apache Doris基本使用和数据模型
深入解析实时数仓Doris:Rollup上卷表与查询
ROLLUP 在多维分析中是“上卷”的意思,即将数据按某种指定的粒度进行进一步聚合。
公众号:码到三十五
2024/04/10
5240
「硬刚Doris系列」Doris高级用法
Rollup 可以理解为 Table 的一个物化索引结构。物化 是因为其数据在物理上独立存储,而 索引 的意思是,Rollup可以调整列顺序以增加前缀索引的命中率,也可以减少key列以增加数据的聚合度。
王知无-import_bigdata
2022/06/05
2.1K0
Doris之ROLLUP
可以看到rollup: rollup_userid,表示查询我们刚才创建的ROLLUP
程裕强
2021/09/08
2.3K0
深入解析实时数仓Doris:三大数据模型详解
在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。
公众号:码到三十五
2024/04/02
2K0
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用。
公众号:码到三十五
2024/05/24
6.6K0
深入解析实时数仓Doris:介绍、架构剖析、应用场景与数据划分细节
Doris概念及常用操作
Duplicate、Aggregate、Unique 模型,都会在建表指定 key 列。
码客说
2023/09/22
1.4K0
Doris概念及常用操作
下一代实时数据库:Apache Doris 【五】数据表的创建
一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一
Maynor
2023/09/25
6960
下一代实时数据库:Apache Doris 【五】数据表的创建
Apache Doris 入门 10 问
基于 Apache Doris 在读写流程、副本一致性机制、 存储机制、高可用机制等方面的常见疑问点进行梳理,并以问答形式进行解答。在开始之前,我们先对本文相关的名词进行解释:
SelectDB技术团队
2024/01/10
1.4K0
StarRocks学习-初识
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。
chimchim
2022/11/13
2.4K0
StarRocks学习-初识
下一代实时数据库:Apache Doris 【七】数据模型
Doris 的数据模型主要分为 3 类:Aggregate 、Uniq 、Duplicate
Maynor
2023/12/20
5110
Doris建表注意事项,实时数仓的同学记得收藏
一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。
小晨说数据
2022/03/10
1.8K0
大数据Doris(十五):Doris分区Partition
第一层是 Partition,即分区。用户可以指定某一维度列作为分区列,并指定每个分区的取值范围,分区支持 Range 和 List 的划分方式。
Lansonli
2023/05/11
5.5K0
Doris数据模型
列可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。
程裕强
2021/09/08
1.8K0
悄悄学习Doris,偷偷惊艳所有人 | Apache Doris四万字小总结
DorisDB是由Apache Doris核心研发团队打造的新一代企业级MPP数据库。它继承了Apache Doris项目十多年研发成果,累积了线上数千台服务器稳定运行经验,并在此基础上,对传统MPP数据库进行了开创性的革新。
王知无-import_bigdata
2021/09/22
7.7K1
[最佳实践] -- 建表如何选择Doris表模型
Doris的表模型和MySQL的存储引擎: innodb,myisam,memeory等功能类似, 不同的表模型擅长处理不同的数据方式. 如何能高效的查询, 直接取决于选择的表模型. 表一旦创建, 表模型不能更改.
小伟
2022/07/24
4.7K0
Doris的查询计划
SQL语句只告诉机器干什么,没有告诉具体怎么干。DBMS内嵌了查询优化器,对用户透明。 但是有时候我们写的SQL语言查询很慢,就需要通过查询计划看看机器具体是怎么执行这个SQL的,确定查询慢的瓶颈问题,然后修改SQL进行优化。
程裕强
2021/08/30
1.8K0
「硬刚Doris系列」Apache Doris 架构原理及核心特性解读
Doris主要分为FE和BE两个组件,FE主要负责查询的编译,分发和元数据管理(基于内存,类似HDFS NN);BE主要负责查询的执行和存储系统
王知无-import_bigdata
2022/06/05
7.4K0
「硬刚Doris系列」Apache Doris 架构原理及核心特性解读
那些年我们一起优化的SQL
如果没有using index condtion,field1会走索引查询,匹配到对应的数据后,回表查出剩余字段信息,再去匹配。
王知无-import_bigdata
2022/06/05
6140
那些年我们一起优化的SQL
Apache Kylin VS Apache Doris全方位对比
本文作者:康凯森,来源于:https://blog.bcmeng.com,文章写的非常详细,从各个方面对Kylin和Doris进行了对比。
王知无-import_bigdata
2019/07/31
13.2K1
Apache Kylin VS Apache Doris全方位对比
相关推荐
硬刚Doris系列」Apache Doris基本使用和数据模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验