美文网首页
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