美文网首页
PostgreSQL 分区update性能测试

PostgreSQL 分区update性能测试

作者: onmeiei | 来源:发表于2021-01-12 19:16 被阅读0次

当前有一个服务的日志表,需要每日进行清理。
当前的做法是truncate,但是会导致业务1分钟左右不能正常提供服务。
如果使用delete,则不能释放存储空间。

故推荐使用分区临时解决问题,在未来,使用异步写日志表的方式彻底优化掉。

但是据说postgresql做完分区后,update的性能会下降。
故进行了如下测试:

PG 11.6,所有数据库参数未调整

场景1:
3个分区,使用虚拟机本地磁盘,更新条件不包含分区键(对分区最坏的情况)
底库数据量: 25万
平均更新所有分区

分区(总耗时/平均耗时) 不分区(总耗时/平均耗时) 差距(毫秒)
52.647/1.7549 48.118/1.6039 0.1509
47.226/1.5742 41.527/1.3842 0.1899

场景2:
24个分区,使用虚拟机本地磁盘,更新条件包含分区键
底库数据量:86.4万
平均更新所有分区

分区(总耗时/平均耗时) 不分区(总耗时/平均耗时) 差距(毫秒)
180.078/2.0842 135.463/1.5678 0.5163
177.785/2.0576 129.475/1.4985 0.5591

场景3:
24个分区,使用/dev/shm存储数据(去除IO影响),更新条件包含分区键
底库数据量:86.4万
平均更新所有分区

分区(总耗时/平均耗时) 不分区(总耗时/平均耗时) 差距(毫秒)
74.815/0.8659 26.817/0.3104 0.5555
74.1/0.8576 25.916/0.2999 0.5576

场景4:
24个分区,使用虚拟机本地磁盘,更新条件包含分区键
底库数据量:86.4万
更新单一分区

分区(总耗时/平均耗时) 不分区(总耗时/平均耗时) 差距(毫秒)
173.459/1.6061 118.508/1.0973 0.5088
166.517/1.5418 109.532/1.0169 0.5248

场景3:
24个分区,使用/dev/shm存储数据(去除IO影响),更新条件包含分区键
底库数据量:86.4万
平均更新所有分区

分区(总耗时/平均耗时) 不分区(总耗时/平均耗时) 差距(毫秒)
81.384/0.7535 25.854/0.2393 0.5141
80.536/0.7457 25.233/0.2336 0.5120

结论:

分区后,UPDATE性能确实增加很多,绝对值在24个分区的情况下,稳定在在0.5毫秒左右。

如果看比率的话,是不分区的2.x倍
但如果看绝对值的话,是绝对可以接收的范围。

相关文章

网友评论

      本文标题:PostgreSQL 分区update性能测试

      本文链接:https://www.haomeiwen.com/subject/dwueaktx.html