news 2026/1/29 10:41:25

doris中的分区上卷

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
doris中的分区上卷

在 Doris 中,分区上卷(Roll-Up)是一种优化存储和查询性能的重要机制,其核心是通过合并细粒度分区(如日分区)为粗粒度分区(如月分区或年分区),减少分区数量并提升查询效率。

当基表数据经过聚合处理后,各分区的数据量可能会显著减少。在这种情况下,可以采用分区上卷策略,以降低物化视图的分区数量。


1. 分区上卷的原理

假设原始表按天分区:

CREATE TABLE sales ( event_day DATE, product_id INT, revenue DECIMAL(10, 2) ) PARTITION BY RANGE(event_day) ( PARTITION p20230101 VALUES [('2023-01-01'), ('2023-01-02')), PARTITION p20230102 VALUES [('2023-01-02'), ('2023-01-03')), ... );

通过分区上卷,可将多个日分区合并为月分区:

ALTER TABLE sales ROLLUP (PARTITION p202301 TO p202301);

2. 操作步骤

2.1 启用分区上卷

在表创建时定义上卷策略:

CREATE TABLE sales ( ... ) PARTITION BY RANGE(event_day) ROLLUP ( TO YEAR(event_day), -- 按年上卷 TO MONTH(event_day) -- 按月上卷 );
2.2 手动触发上卷
ALTER TABLE sales ROLLUP PARTITION p20230101, p20230102 TO PARTITION p202301;

3. 使用场景

  • 存储优化:合并旧分区减少小文件数量,降低存储开销。
  • 查询加速:查询月数据时直接访问月分区,避免扫描多个日分区。
  • 自动化管理:结合调度工具定期执行上卷操作。

4. 注意事项

  • 不可逆性:上卷后原分区数据不可恢复,需提前备份。
  • 权限要求:需ALTER权限执行上卷操作。
  • 性能影响:上卷过程可能暂时占用系统资源,建议低峰期执行。

5. 示例代码

# 模拟按月自动上卷的调度逻辑 import schedule import doris_client def monthly_rollup(): last_month = "2023-12" # 合并上个月的所有日分区 doris_client.execute( f"ALTER TABLE sales ROLLUP PARTITION p{last_month}01 TO p{last_month}31 TO PARTITION p{last_month};" ) schedule.every().month.do(monthly_rollup)

通过合理使用分区上卷,可显著提升 Doris 在大数据场景下的存储与查询效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/22 1:11:52

doris的Bucket Shuffle Join

好的,我们来详细解释一下 Doris 中的 Bucket Shuffle Join。 概念 Bucket Shuffle Join 是 Apache Doris 中用于优化分布式环境下关联查询(Join)性能的一种技术。它主要解决的是在传统 Shuffle Join 中,通过网络传输大量数据进行重分布(Shuffle)所带来的网络开销和延迟…

作者头像 李华
网站建设 2026/1/27 4:02:36

微信小程序vue_uniapp电子作业批改系统

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/1/29 2:07:54

微信小程序vue_uniapp电影院订票选座系统

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华
网站建设 2026/1/27 10:38:06

Java 多线程编程 - 任务的 cancel 方法、isCancelled 方法、isDone 方法

一、cancel 方法 boolean cancel(boolean mayInterruptIfRunning);cancel 方法用于取消异步任务的执行参数值说明true如果任务正在执行,中断任务false如果任务正在执行,不会中断任务;如果任务还未开始,中断任务 返回值说明true任务…

作者头像 李华