如何体现timescaledb在insert过程中比原生PG的优势?

目录

CASE-1 减少shared_buffer 从3GB到512MB。

CASE-2, 4个索引,4并发,总共4亿行数据,监控PG实时写入速率

CASE-3 改用HDD机械硬盘测试


接上周一篇 timescaledb和PG写入性能测试 https://blog.csdn.net/jacicson1987/article/details/83064313

经过1亿数据量的测试,并没有发现timescaledb的在insert方面的优势。timescaledb官网上也只有一张图,并没有详细的测试场景介绍。

官网的说明是,数据量足够大,当PG的索引不在适合内存的时候,每次插入要更加频繁的访问磁盘获取索引,导致性能急剧下降。

尝试复现PG性能随着数据量/索引增大,性能下降的曲线。

测试环境与之前保持一致。

CASE-1 减少shared_buffer 从3GB到512MB。

1亿行数据,单线程,2个索引

总速率(行/s)单线程
timescaledb24066
PG25046

减少shared_buffer没有效果,还是PG快。

CASE-2, 4个索引,4并发,总共4亿行数据,监控PG实时写入速率

PG单测总行数time cost速率(行/s)
线程1100000000632015823 
线程2100000000630015873 
线程3100000000633315790 
线程4100000000634215768 
Total400000000634263072 

实时监控其速度,保持稳定,从开始到结束,一致稳定在6.3W行/s 小幅波动。

表大小 86GB, 索引 47GB

postgres=# select pg_size_pretty(pg_relation_size('cts1_time_idx'));
 pg_size_pretty 
----------------
 14 GB
(1 row)

postgres=# select pg_size_pretty(pg_relation_size('cts1_id_idx'));
 pg_size_pretty 
----------------
 11 GB
(1 row)

postgres=# select pg_size_pretty(pg_relation_size('cts1_col2_idx'));
 pg_size_pretty 
----------------
 11 GB
(1 row)

postgres=# select pg_size_pretty(pg_relation_size('cts1_col3_idx'));
 pg_size_pretty 
----------------
 11 GB
(1 row)
postgres=# select pg_size_pretty(pg_table_size('cts1'));
 pg_size_pretty 
----------------
 86 GB
(1 row)

早就超过内存最大值32GB。PG性能无衰减。

怀疑SSD性能太好,访问索引开销不足以使得性能下降,观察disk使用率都没超过70%。

 

CASE-3 改用HDD机械硬盘测试

重置PG data至机械硬盘。

改回shared_buffer = 3GB, 单线程1亿行测试,耗时7517秒。

总速率(行/s)单线程
PG13303

实时速率

实时速率波动很大, 一千万行前也有一点衰减,但是和复现目标还是相去甚远。

 

综上几个场景下,PG 插入性能比较稳定,尤其是SSD的环境中,并不会有任何性能衰减现象。HDD中有一点衰减,如果在HDD的基础上再做参数调整,也许能复现那个跳水曲线。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值