1. 程式人生 > 其它 >clickhouse壓縮與編碼

clickhouse壓縮與編碼

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使用率。