• doris---Rollup


    Rollup

    3.5.1基本概念
    通过建表语句创建出来的表称为 Base 表(Base Table,基表)
    在 Base 表之上,我们可以创建任意多个 ROLLUP 表。这些 ROLLUP 的数据是基于 Base 表产生的,并且在物理上是独立存储的。
    Rollup表的好处:

    1. 和基表共用一个表名,doris会根据具体的查询逻辑选择合适的数据源(合适的表)来计算结果
    2. 对于基表中数据的增删改,rollup表会自动更新同步
      3.5.2 Aggregate 模型中的 ROLLUP
      查看下之前建得一张表:
      mysql> desc ex_user all;
      [图片]

    示例1:查看某个用户的总消费
    添加一个roll up
    alter table aggregate表名 add rollup “rollup表的表名” (user_id,city,date,cost);

    alter table ex_user add rollup rollup_ucd_cost(user_id,city,date,cost);
    alter table ex_user add rollup rollup_u_cost(user_id,cost);
    alter table ex_user add rollup rollup_cd_cost(city,date,cost);

    alter table ex_user drop rollup rollup_u_cost;
    alter table ex_user drop rollup rollup_cd_cost;

    –如果是replace聚合类型得value,需要指定所有得key
    – alter table ex_user add rollup rollup_cd_visit(city,date,last_visit_date);
    – ERROR 1105 (HY000): errCode = 2, detailMessage = Rollup should contains
    – all keys if there is a REPLACE value

    –添加完成之后可以show一下,看看底层得rollup有没有执行完成
    SHOW ALTER TABLE ROLLUP;
    ![[图片](https://img-blog.csdnimg.cn/3519b9efcb814fc49bba05ecd612450f.png)

    再次查看该表得详细信息后发现,多了一个IndexName为rollup_cost_userid(这是我们自己取得roll
    Up 名字)
    [图片]

    Doris 会自动命中这个 ROLLUP 表,从而只需扫描极少的数据量,即可完成这次聚合查询。
    explain SELECT user_id, sum(cost) FROM ex_user GROUP BY user_id;
    [图片]

    示例 2:获得不同城市,不同年龄段用户的总消费、最长和最短页面驻留时间
    alter table ex_user add rollup rollup_city(city,age,cost,max_dwell_time,min_dwell_time);

    – 当创建好了立即去查看得时候就会发现,他还没有开始
    SHOW ALTER TABLE ROLLUP;
    然后过会再去查询得时候,他就完成了,看他的状态即可

    [图片]

    [图片]

    分别执行下面得三条语句,看看有什么不一样的??
    explain SELECT city, age, sum(cost), max(max_dwell_time), min(min_dwell_time) FROM ex_user GROUP BY city, age;
    explain SELECT city, sum(cost), max(max_dwell_time), min(min_dwell_time) FROM ex_user GROUP BY city;
    explain SELECT city, age, sum(cost), min(min_dwell_time) FROM ex_user GROUP BY city, age;
    [图片]

    [图片]

    [图片]

    很显然得发现,维度是city,或者age,或者他们组合得时候,都是可以命中这个rollup得,相对来说效率会高很多

  • 相关阅读:
    为什么要选快鲸智慧社区系统?四大突出优势值得信赖
    深度|谁在为OpenAI和Anthropic的AI编程竞赛提供“军火”?已赚得盆满钵满
    YonBuilder开发之后端函数
    广读论文核心思路汇总笔记 (一些有意思的论文and论文在研究的一些有意思的问题or场景应用)
    golang工程——gRpc 拦截器及原理
    Leetcode 【136. 只出现一次的数字】
    在ASP.NET Core微服务架构下使用RabbitMQ如何实现CQRS模式
    Spring框架之IOC容器的底层原理(一篇就会)
    2023年中国金属涂胶板行业供需分析:销量同比增长2.8%[图]
    0基础转行软件测试,自学3个月,浅拿12k*13薪offer
  • 原文地址:https://blog.csdn.net/Y521316/article/details/130907585