压缩模式
ClickHouse 协议支持带有校验和的 数据块 压缩。
如果不确定选择哪种模式,请使用 LZ4
。
提示
了解更多关于可用的 列压缩编码器,并在创建表时或之后指定它们。
模式
value | name | description |
---|---|---|
0x02 | None | 不压缩,仅有校验和 |
0x82 | LZ4 | 极快,良好的压缩效果 |
0x90 | ZSTD | Zstandard,相当快,最佳压缩效果 |
LZ4 和 ZSTD 的作者相同,但有不同的权衡。 根据 Facebook 基准测试:
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 |
块
field | type | description |
---|---|---|
checksum | uint128 | Hash of (header + compressed data) |
raw_size | uint32 | 原始大小(不含头部信息) |
data_size | uint32 | 解压后的数据大小 |
mode | byte | 压缩模式 |
compressed_data | binary | 压缩数据块 |

头部是 (raw_size + data_size + mode),原始大小由 len(header + compressed_data) 组成。
校验和是 hash(header + compressed_data)
,使用 ClickHouse CityHash。
无压缩模式
如果使用 None 模式,compressed_data
等于原始数据。
无压缩模式在确保数据完整性方面是有用的,因为其校验和开销可以忽略不计。