メインコンテンツまでスキップ
メインコンテンツまでスキップ

圧縮モード

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ハッシュ (ヘッダー + 圧縮データ)
raw_sizeuint32ヘッダーなしの生サイズ
data_sizeuint32圧縮されていないデータサイズ
modebyte圧縮モード
compressed_databinary圧縮データのブロック
ClickHouse 圧縮ブロック構造を示す図

ヘッダーは (raw_size + data_size + mode) で構成され、生サイズは len(header + compressed_data) からなります。

チェックサムは hash(header + compressed_data) で、ClickHouse CityHash を使用しています。

None モード

None モードが使用される場合、 compressed_data は元のデータと等しいです。 圧縮なしモードは、チェックサムによる追加のデータ整合性を確保するのに役立ちます。なぜなら、ハッシングのオーバーヘッドは無視できるためです。