TSZ 压缩算法是 TDengine 为浮点数据类型提供的可选压缩算法,可以实现浮点数有损至无损全状态压缩,相比默认压缩算法,TSZ 压缩算法压缩率更高,即使切至无损状态,压缩率也会比默认压缩高一倍。一般来说,TSZ 压缩算法是通过数据预测技术完成的压缩,所以更适合有规律变化的数据。同时 TSZ 压缩时间会更长一些,在我们的服务器 CPU 空闲、存储空间紧张的情况下适合选用。
在此前发布的《压缩比提高5倍!贡献者+1》一文中,华中科技大学、武汉光电国家研究中心的硕士研究生钟宇为大家详细介绍了其在近期发表的学术论文中,针对 TDengine TSZ 压缩算法进行的相关改进。本篇文章中,我们将就如何在 TDengine 中开启 TSZ 压缩算法进行详细说明,并会针对 TSZ 压缩算法展开功能测试,为大家验证其在实际业务场景中的更优性能。
TDengine 3.2.0.0 及以上版本中支持此压缩算法。在 taos.cfg 配置中增加以下内容,即可开启 TSZ 压缩算法,功能打开后,会替换默认算法。以下表示字段类型是 float 及 double 类型都使用此压缩算法,也可以单独只配置一个。
lossyColumns float|double
配置成功后需要重启服务才能生效,当 Taosd 日志输出以下内容时,即表明功能已生效:
02/22 10:49:27.607990 00002933 UTL lossyColumns float|double
FLOAT 类型精度控制:
DOUBLE 类型精度控制:
TSZ 压缩中可选择的算法 FSE,默认为 HUFFMAN:
但需要注意的是,打开 TSZ 后生成的存储数据格式,在回退至 3.2.0.0 之前的版本后数据将不能被识别。
首先我们需要验证写入数据被 TDengine 存储后再次读取出来的正确性:
首先我们需要先写入打开 TSZ 压缩的数据,然后再写入关闭 TSZ 压缩的数据,此阶段测试预期是不管 TSZ 选项打开或关闭,原来使用 TSZ 写入的及没有使用 TSZ 写入的都能正确读取出来。
测试步骤如下:
测试结果显示原来的数据及新写入数据,都正常为符合预期,反复打开及关闭 TSZ,不影响已写入数据的正常存取。
我们对本次新引入的 FSE 算法、原来的算法,及关闭 TSZ 压缩后的三个场景作为三种方案进行对比测试,验证打开 TSZ 算法及使用 TSZ 新的 FSE 算法的效果。本次测试的数据规模如下:1 个超级表,2 个子表,每子表 100 万条数据,子表为 25 列 (其中 float 11 列、double 11 列)。
下表为最终测试结果:
从上表可知,方案一中新增的 FSE 算法打开后写入性能优于原来的算法,符合预期;其次,TSZ 压缩算法打开比关闭时,在写入性能、查询及压缩率方面均有小幅提升,此结论也符合预期。
在阅读完本篇文章后,你一定对在 TDengine 中开启 TSZ 压缩算法及如何打造更优质性能有了更深入的了解,现在你可以进行操作了。如果在实操过程中碰到任何问题或难点,可以添加 小T vx(tdengine),和我们的资/深研发工程师进行面对面沟通。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014783/viewspace-2997578/ ,如需转载,请注明出处,否则将追究法律责任。