Apache Doris 的数据分片逻辑采用多级分区策略,通过分区(Partition)+分桶(Bucket) 的复合机制实现数据高效管理与查询优化,具体逻辑如下:
PARTITION BY RANGE(date) (PARTITION p202305 VALUES [('2023-05-01'), ('2023-06-01')))DISTRIBUTED BY HASH(user_id) BUCKETS三、典型应用场景 时序数据存储 按时间分区后哈希分桶,加速时间范围过滤与聚合查询 高并发点查 选择高基数列(如用户ID)分桶,利用前缀索引快速定位数据块 宽表分析 随机分桶分散存储压力,结合列式存储优化复杂查询性能
-- 创建复合分区表
CREATE TABLE user_behavior (
date DATE,
user_id INT,
action VARCHAR(20)
)
PARTITION BY RANGE(date) (
PARTITION p202305 VALUES [('2023-05-01'), ('2023-06-01'))
)
DISTRIBUTED BY HASH(user_id) BUCKETS 8;物理存储:每个 user_id 哈希值映射到 8 个分桶,每个分桶对应多个 Tablet,最终存储为物理文件 查询优化:查询 date='2023-05-15' AND user_id=123 时,仅扫描 p202305 分区中对应分桶的 Tablet 通过这种多层分片机制,Doris 平衡了数据管理灵活性与查询性能需求。