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

 

posted @ 2022-03-17 11:33  渐逝的星光  阅读(1958)  评论(0编辑  收藏  举报