七万号·数据平台实战手记

Back

① 标题党#

主标题一张表存千亿行?Doris 的分区分桶能让强迫症狂喜 备选别人建表是写 SQL,你建表是给数据"分房"?

② 开场钩子#

业务表动辄百亿行,可 Doris 查起来还是快。为什么呢?因为它建表时——不是把数据一股脑堆一块,而是先给你分了房、再排了队

③ 主角特性:Range 分区 + Hash 分桶#

  • Range 分区:按时间/值域切大块(如按天/月),查询 WHERE date=... 直接跳过无关分区(分区裁剪)。
  • Hash 分桶:分区内部再按某列哈希切成固定桶,让数据均匀分布到多个 BE,配合分布式并行扫描。

关键:分桶列选错,热点就会压垮单个 BE;选对,扫描天然并行。

④ 最小可复现#

CREATE TABLE events (
  id BIGINT, ts DATETIME, city VARCHAR(16), ...
)
PARTITION BY RANGE(ts) (...);       -- 按时间分区
DISTRIBUTED BY HASH(city) BUCKETS 16 -- 按城市分桶
PROPERTIES ("replication_num" = "3");
sql

⑤ 结论#

分区管”跳过”,分桶管”并行”。Doris 的建表,本质是让每一次查询天然走捷径

⑥ 配图脚本#

分区=切蛋糕 / 分桶=Hash 漏斗 / 分区裁剪示意 / 不均匀热点 vs 均匀对比


分区分桶:超大表的'强迫症收纳术'
https://realcpf.tech/blog/doris-02
Author 刘佳成
Published at 2026年9月1日