ClickHouse中part_type的wide与compact区别及min_bytes_for_wide_part参数含义
ClickHouse中wide与compact类型Part的差异及min_bytes_for_wide_part参数解析
wide与compact类型Part的核心差异
- 存储结构
- compact:所有列的数据集中存储在单个
data.bin文件中,列的元信息记录在columns.txt里。这种结构能减少小Part的文件数量,节省inode资源。 - wide:每一列的数据都独立存储在专属文件中(如
user_id.bin、order_amount.bin),每个列还对应单独的元数据文件。
- compact:所有列的数据集中存储在单个
- 读写性能
- compact:小数据量写入时更快,因为只需要操作一个文件;但查询仅需部分列时,必须读取整个数据文件,IO效率偏低。
- wide:小数据量写入时因需创建多个文件,开销略高;但查询部分列时,仅需读取目标列的文件,能大幅降低IO开销,提升查询速度,尤其适合列数较多的表。
- 适用场景
- compact:适合小批量插入生成的小体积Part,避免系统产生大量细碎文件。
- wide:适合大体积Part,或者经常进行列裁剪查询(只查部分列)的场景。
min_bytes_for_wide_part参数的具体含义
这个参数是ClickHouse控制Part存储格式的阈值:
- 当单个Part的总大小小于该参数设定值时,Part会以compact格式存储;当总大小大于等于该值时,自动采用wide格式。
- 默认值为
10485760(即10MB),可以通过全局配置文件修改,也能在创建表时通过SETTINGS min_bytes_for_wide_part = XXX单独指定。 - 注意:该阈值针对的是单个Part的大小,而非整个表。当后台合并小Part后,若合并后的Part大小达到阈值,会自动转换为wide格式。
内容的提问来源于stack exchange,提问作者keep wake
相关产品推荐
相关产品推荐

