Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

压缩模式

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

模式

value name description
0x02 None 不压缩,仅使用校验和
0x82 LZ4 速度极快,压缩效果较好
0x90 ZSTD Zstandard,速度相当快,压缩效果最佳

LZ4 和 ZSTD 都出自同一位作者,但取舍各不相同。 摘自 Facebook benchmarks

name ratio encoding decoding
zstd 1.4.5 -1 2.8 500 MB/s 1660 MB/s
lz4 1.9.2 2.1 740 MB/s 4530 MB/s

字段 类型 描述
checksum uint128 (请求头 + 压缩数据) 的 哈希
raw_size uint32 不含请求头的原始大小
data_size uint32 未压缩数据大小
mode byte 压缩模式
compressed_data binary 压缩数据块
说明 ClickHouse 压缩块结构的示意图

请求头为 (raw_size + data_size + mode),raw_size 的值为 len(请求头 + compressed_data)。

校验和为 hash(header + compressed_data),使用 ClickHouse CityHash

None 模式

如果使用 None 模式,compressed_data 与原始数据相同。 由于哈希计算的开销可以忽略不计,无压缩模式也有助于借助校验和进一步确保数据完整性。

Navigation