数据仓库与 OLAPClickHouse Partition
分区 是什么?
按时间等维度切目录,查询时先裁剪掉无关分区
类比:按月分文件夹存账单
分区是第一层裁剪
分区键常见是 `toYYYYMM(event_date)` 或 `toDate(event_date)`。查询带时间范围时,ClickHouse 直接跳过其他分区目录,连索引都不用读。
分区不能太细
官方建议单表分区数控制在 100~1000 之间。按天分区存三年就是 1000 多个,已经偏多;按小时分区基本是灾难,会拖慢启动和合并。
分区太多还会让 `system.parts` 膨胀,元数据操作变慢。
分区也是删除单位
`ALTER TABLE ... DROP PARTITION` 是秒级操作,直接删目录,比 `DELETE WHERE` 高效得多。所以冷数据清理一律按分区删,这也是按时间分区的另一个理由。