clickhouse壓縮與編碼
阿新 • • 發佈:2022-03-17
1.通用編碼
None:無壓縮
LZ4:預設的壓縮演算法,預設值也是使用預設的壓縮演算法
LZ4HC[(level)]:z4高壓縮率壓縮演算法版本, level預設值為9,支援[1~12],推薦選用[4~9]
ZSTD[(level)]:zstd壓縮演算法,level預設值為1,支援[1~22]
2.特殊編碼
LowCardinality:列舉值小於1w的字串
Delta:時間序列型別的資料,不會對資料進行壓縮
T64:比較適合Int型別資料
DoubleDelta:適用緩慢變化的序列:比如時間序列,對於遞增序列效果很好
Gorilla:使用緩慢變化的數值型別
特殊編碼與通用的壓縮演算法相比,區別在於,通用的LZ4和ZSTD壓縮演算法是普適行的,不關心資料的分佈特點,而特殊編碼型別對於特定場景下的資料會有更好的壓縮效果。
3.使用
壓縮演算法和特殊編碼兩者可以結合起來一起使用
CREATE TABLE k19_ods.test8 ( `found _time` Uint32, `recv_timet` UInt32 CODEC ( NONE ), `recv_time2` UInt32, `recv_time3` Ulnt32 CODEC ( LZ4 ), `recv_time4` UInt32 CODEC (LZ4HC (9 )), `recv_time5` UInt32 CODEC (ZSTD ( 9 ), `recv_time6` Ulnt32 CODEC ( T640 ), `name0` String CODEC (Delta (, LZ4 ), `name1` String CODEC ( DoubleDelta0 )), `name2` String CODEC ( Gorilla ( 0 ), `name4` String cODEC ( Gorilla ), Lz4 ) ) ENGINE = MergeTree () PARTITION BYtoYYYYMMDD ( toDateTime(found_time ))ORDER BY found_time
4.壓縮效果對比
需要注意一點就是,對於LZ4HC和ZSTD選擇的壓縮level越高,壓縮效果越好,但是CPU的使用率也會相應的越高。如果插入的資料量很大,會明顯看到較高的CPU使用率。