メインコンテンツへスキップ
メインコンテンツへスキップ

圧縮モード

ClickHouse プロトコルは、チェックサム付きの データブロック の圧縮をサポートしています。 どのモードを選ぶべきか迷う場合は、LZ4 を使用してください。

ヒント

利用可能な カラム圧縮コーデック について詳しく確認し、テーブル作成時または作成後にそれらを指定してください。

モード

valuenamedescription
0x02None圧縮なし、チェックサムのみ
0x82LZ4非常に高速で、良好な圧縮率
0x90ZSTDZstandard。比較的高速で、圧縮率が最も高い

LZ4 と ZSTD は同じ開発者によって作られていますが、トレードオフが異なります。 Facebook によるベンチマークでは次のように示されています:

nameratioencodingdecoding
zstd 1.4.5 -12.8500 MB/s1660 MB/s
lz4 1.9.22.1740 MB/s4530 MB/s

ブロック

fieldtypedescription
checksumuint128(header + compressed data) のハッシュ
raw_sizeuint32ヘッダーを含まない生データサイズ
data_sizeuint32非圧縮データサイズ
modebyte圧縮モード
compressed_databinary圧縮データのブロック
ClickHouse の圧縮ブロック構造を示す図

ヘッダーは (raw_size + data_size + mode) で構成され、raw_size は header + compressed_data の長さです。

Checksum は ClickHouse CityHash を用いて hash(header + compressed_data) として計算されます。

None モード

None モードを使用する場合、compressed_data は元のデータと同一になります。 非圧縮モードは、ハッシュ計算のオーバーヘッドが無視できる程度に小さいため、チェックサムによって追加のデータ完全性を確保するのに有用です。