发布网友 发布时间:2022-10-07 18:15
共1个回答
热心网友 时间:2023-10-28 23:58
ClickHouse支持多种方式的数据压缩:LZ4和ZSTD。
关于压缩算法的测试,见 这篇文章 。简而言之,LZ4在速度上会更快,但是压缩率较低,ZSTD正好相反。尽管ZSTD比LZ4慢,但是相比传统的压缩方式Zlib,无论是在压缩效率还是速度上,都可以作为Zlib的替代品。
下面我们对比一下这两种压缩方式。压缩测试所用的表(lineorder)结构和数据来自 这里 。未压缩的数据集是680GB。
把上述数据加载到ClickHouse后,默认的LZ4压缩算法下,数据容量是184G(压缩到27%),而ZSTD达到了135GB(压缩到20%)。
如果想要使用ZSTD压缩方式,修改为如下配置即可:
压缩比率对比
压缩后的查询性能如何,我们来跑如下查询看看:
为了保持客观,查询测试会跑两次,第一次是冷数据请求,这次的数据没有被操作系统缓存,第二次是热数据情求,这次的数据已经被操作系统的内存缓存了。
LZ4的性能如下:
ZSTD性能如下:
冷数据查询情况下,两者区别不大,因为消耗在IO方面的时间,远大于消耗在数据解压缩上面的时间。
热数据请求下,LZ4会更快,此时IO代价小,数据解压缩成为性能瓶颈。
综上所述,默认的LZ4压缩方式,会给我们提供更快的执行效率,但是同时需要占用较多的磁盘容量。
ClickHouse抛开高效的SQL执行效率,数据压缩比率也是一个非常喜人的地方。使用Hadoop Node低配置服务器,再加上ClickHouse优秀的压缩性能,单机容量轻松可达几十T,推荐直接使用默认的LZ4压缩方式,用可以接受的少量空间来换查询执行效率的提升。