时序库timescaledb压缩功能优化

瀚高数据库
目录
环境
症状
问题原因
解决方案

环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 8
版本:4.5.8
症状
安装时序库timescaledb,使用数据压缩功能,压缩操作非常慢,导致压缩进程一直在运行,大量占用磁盘IO。版本为2.11

问题原因
经过分析,与参数timescaledb.enable_compression_indexscan有关。将此参数关闭(off)时,压缩速度明显提升。此参数的默认是打开(on)状态。以下的表1 是对比测试

表1

分区(chunk)大小压缩时间参数配置
4.8G约40minenable_compression_indexscan = ‘ON’
4.8G约4minenable_compression_indexscan = ‘OFF’
5G约54minenable_compression_indexscan = ‘ON’
5G约4minenable_compression_indexscan = ‘OFF’

官方github上有人提出这个问题,并进行了大量讨论。 参考 [Bug]: Performance degradation (5x slower) on chunk compression after update from TimescaleDB 2.9.0 to 2.11.1 #5902

官方给出相关解释:

在2.11之前,数据压缩成本受排序的影响,排序的成本取决于表的大小和分配的内存大小(work_mem)。如果表很大,内存设置的很小,在这种情况下,元组将作为临时文件写到磁盘。现在,排序成本将会增加,因为其也包括了IO操作。此外在客户的系统中发现了这样的趋势:在大的分区压缩期间会创建大型临时文件导致性能下降。为了优化压缩,我们在压缩代码中添加了一个智能选项,以选择与压缩设置配置相匹配的相关索引。这将使排序成本降低,因为数据在索引中是排好序的。从理论上讲,这是对压缩功能的一个优化,但事与愿违。

注:在新版本TimescaleDB 2.14.1上默认情况下参数timescaledb.enable_compression_indexscan已禁用。

解决方案

将此参数关闭。设置参数timescaledb.enable_compression_indexscan值为off。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值