ClickHouseデータ圧縮

1823 ワード

ClickHouseは、LZ 4およびZstdの様々な方法のデータ圧縮をサポートします.圧縮アルゴリズムのテストについては、この文章を参照してください.簡単に言えば、LZ 4は速度的には速いが、圧縮率は低く、Zstdは正反対である.ZstdはLZ 4より遅いが、従来の圧縮方式Zlibに比べて圧縮効率においても速度においてもZlibの代替品として用いることができる.この2つの圧縮方式を比較してみましょう.圧縮テストに使用されるテーブル構造とデータは、ここから来ています.圧縮されていないデータセットは680 GBです.上記のデータをClickHouseにロードすると、デフォルトのLZ 4圧縮アルゴリズムでは、データ容量は184 G(27%に圧縮)であり、Zstdは135 GB(20%に圧縮)に達した.Zstd圧縮方式を使用する場合は、以下の構成に変更すればよい.

    
        zstd  
    


あっしゅくりつひかく
Compression
Ratio
LZ4
3.7
Zstd
5.0
圧縮されたクエリーのパフォーマンスはどうですか.次のクエリーを実行してみましょう.
SELECT toYear(LO_ORDERDATE) AS yod, sum(LO_REVENUE) FROM lineorder GROUP BY yod;

客観性を保つために、クエリーテストは2回走り、1回目はコールドデータ要求で、今回のデータはオペレーティングシステムにキャッシュされず、2回目はホットデータ情求で、今回のデータはオペレーティングシステムのメモリにキャッシュされました.LZ 4の性能は以下の通りである.
# Cold run:
7 rows in set. Elapsed: 19.131 sec. Processed 6.00 billion rows, 
36.00 GB (313.63 million rows/s., 1.88 GB/s.)
# Hot run:
7 rows in set. Elapsed: 4.531 sec. Processed 6.00 billion rows, 
36.00 GB (1.32 billion rows/s., 7.95 GB/s.)

Zstdの性能は以下の通りである.
# Cold run:
7 rows in set. Elapsed: 20.990 sec. Processed 6.00 billion rows, 
36.00 GB (285.85 million rows/s., 1.72 GB/s.)
# Hot run:
7 rows in set. Elapsed: 7.965 sec. Processed 6.00 billion rows, 
36.00 GB (753.26 million rows/s., 4.52 GB/s.)

コールドデータクエリの場合、IOにかかる時間は、データ解凍にかかる時間よりはるかに大きいため、両者の違いは大きくありません.ホットデータ要求の下で、LZ 4はもっと速くなることができて、この時IOの代価は小さくて、データの解凍は性能のボトルネックになります.以上のように、デフォルトのLZ 4圧縮方式では、より高速な実行効率が得られますが、ディスク容量を多く消費する必要があります.ClickHouseは効率的なSQL実行効率を捨てて、データ圧縮比率も非常に喜ばしい場所です.Hadoop Nodeの低構成サーバに加え、ClickHouseの優れた圧縮性能により、単機容量が数十Tに容易に対応できるため、デフォルトのLZ 4圧縮方式を直接使用し、許容できる少量の空間でクエリーの実行効率を向上させることをお勧めします.