压缩模式
ClickHouse 协议支持带校验和的**数据块**压缩。如果不知道选择哪种模式,请使用LZ4
。
提示
了解更多关于可用的列压缩编解码器,并在创建表时或之后指定它们。
模式
值 | 名称 | 描述 |
---|---|---|
0x02 | 无 | 无压缩,只有校验和 |
0x82 | LZ4 | 极快,压缩率好 |
0x90 | ZSTD | Zstandard,速度很快,压缩率最佳 |
LZ4 和 ZSTD 都是由同一个作者制作的,但权衡不同。来自facebook 基准测试
名称 | 比率 | 编码 | 解码 |
---|---|---|---|
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 |
块
字段 | 类型 | 描述 |
---|---|---|
校验和 | uint128 | 哈希 (标头 + 压缩数据) |
原始大小 | uint32 | 不含标头的原始大小 |
数据大小 | uint32 | 未压缩数据大小 |
模式 | 字节 | 压缩模式 |
压缩数据 | 二进制 | 压缩数据块 |
标头是 (原始大小 + 数据大小 + 模式),原始大小包括 len(标头 + 压缩数据)。
校验和是hash(标头 + 压缩数据)
,使用ClickHouse CityHash.
无模式
如果使用无模式,则压缩数据
等于原始数据。由于哈希开销可以忽略不计,因此无压缩模式有助于确保带校验和的额外数据完整性。