圧縮モード
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 |
ブロック
フィールド | 型 | 説明 |
---|---|---|
checksum | uint128 | ハッシュ (ヘッダー + 圧縮データ) |
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を使用しています。
なしモード
なしモードが使用されている場合、compressed_data
はオリジナルデータと等しくなります。圧縮なしのモードは、チェックサムを使用して追加のデータ整合性を確保するために有用です。なぜなら、ハッシュingのオーバーヘッドは無視できるからです。