首页/数据/NoSQL 速查/PARTITION BY 分区设计与裁剪
本包目录(322 条)
MongoDB99 条Elasticsearch89 条
ClickHouse56 条
时序与列式28 条选型与架构50 条

PARTITION BY 分区设计与裁剪

分区键把数据切成独立目录,便于按月/天批量删除、移动冷数据;查询里对分区键的过滤可以整块跳过分区,是运维与查询双层优化的关键。

NoSQL 速查数据更新于 2026-10-12
常用写法toYYYYMM(ts) 按月、toDate(ts) 按天、tuple(region, toYYYYMM(ts)) 组合
收益分区裁剪减少扫描;DROP PARTITION 秒级清理历史数据
代价分区数量过多会让元数据、合并与查询开销上升,按月或按天即可

示例

示例
-- 查看分区及大小
SELECT partition, rows, formatReadableSize(bytes_on_disk) AS size
FROM system.parts
WHERE table = 'events' AND active
ORDER BY partition;

-- 按分区删除历史数据
ALTER TABLE events DROP PARTITION '202301';
按月分区适合保留期长的表,按天分区适合保留期短或需要按天重算的表;两者可以组合成 tuple 键。

易错点

  • 分区数量过多(例如按秒分区)会导致 system.parts 行数与合并压力失控
  • 分区键用到 Nullable 或浮点列时行为不易预期,优先用确定性的整数/日期表达式

数据来源与参考

  • ClickHouse Docs: Custom partitioning key
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌