压缩模式
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 | Hash of (header + compressed data) |
raw_size | uint32 | 不含标头的原始大小 |
data_size | uint32 | 未压缩数据大小 |
模式 | byte | 压缩模式 |
compressed_data | binary | 压缩数据块 |
标头为(raw_size + data_size + 模式),原始大小由 len(header + compressed_data) 组成。
校验和为 hash(header + compressed_data)
,使用 ClickHouse CityHash。
无模式
如果使用无模式,则 compressed_data
等于原始数据。无压缩模式对于通过校验和确保额外的数据完整性非常有用,因为哈希开销可以忽略不计。