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

圧縮モード

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) で、raw size は len(header + compressed_data) から成ります。

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

None モード

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