跳到主要内容
跳到主要内容

压缩模式

ClickHouse 协议支持对带有校验和的数据块进行压缩。 如果不确定选择哪种模式,请使用 LZ4

提示

了解更多可用的列压缩编解码器,并在创建表时或之后指定它们。

模式

valuenamedescription
0x02None(无压缩)不进行压缩,仅计算校验和
0x82LZ4极快,压缩效果良好
0x90ZSTDZstandard,速度较快,压缩率最高

LZ4 和 ZSTD 均由同一位作者开发,但在性能取舍上有所不同。 数据摘自 Facebook 基准测试

nameratioencodingdecoding
zstd 1.4.5 -12.8500 MB/s1660 MB/s
lz4 1.9.22.1740 MB/s4530 MB/s

字段类型说明
checksumuint128(header + compressed data) 的 哈希
raw_sizeuint32不包含头部的原始大小
data_sizeuint32解压后的数据大小
modebyte压缩模式
compressed_databinary压缩数据块
展示 ClickHouse 压缩块结构的示意图

头部由 (raw_size + data_size + mode) 组成,raw_size 为 len(header + compressed_data)。

Checksum 为 hash(header + compressed_data),使用 ClickHouse CityHash

None 模式

如果使用 None 模式,compressed_data 等于原始数据。 无压缩模式在使用校验和进一步确保数据完整性时很有用,因为 哈希计算的开销可以忽略不计。