暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL14新特性:海量连接性能基本不下降

中启乘数 2022-12-02
248

前言

中启乘数科技是一家专业的PostgreSQL和Greenplum数据库服务提供商,专注于数据库极致的性能,当前PostgreSQL 14beta1已经发布,其中一个激动人心的特性就是当数据库有海量连接时,其它连接的性能基本不下降。下面我们通过实际的测试来说明。

测试环境和方法

本着不详细介绍测试方法和测试环境的测试都是耍流氓的精神,我们把测试环境和方法详细介绍如下:

我们准备在一台物理机器上准备两套环境,一套是PostgreSQL 13.3,另一套是PostgreSQL 14beta1。
物理机器的硬件为2路服务器,CPU为:Intel(R) Xeon(R) Silver 4210R CPU @ 2.40GHz,内存为256GB。

我们使用 initdb 命令初始化数据库,然后修改最大连接数:

其它参数都不修改,默认shared_buffer为128MB。

然后用pgbench造2千万行数据:

PostgreSQL 14与PostgreSQL 13在造数据上花的时间差不多,稍微快一点:

PostgreSQL 14:

PostgreSQL 13:

测试方法的思路是我们给数据库建9000个执行pg_sleep(2000)的空闲连接,然后用pgbench做只读压力测试。

建9000个pg_sleep(2000)连接的方法为:

我们建一个sleep.sql的文件,内容如下:

然后执行下面的命令:

而我们压力测试的命令为:

实际测试

1.开启9000个空闲连接的测试

测试PostgreSQL 13.3

先开9000个执行pg_sleep()的连接:

然后压力测试:

测试PostgreSQL 14beta1

先开9000个执行pg_sleep()的连接:

然后压力测试:

可以看到在PostgreSQL 13中只能到达27万,而在PostgreSQL 14中就可以达到51万了,有近翻倍的性能提升。


2.极端测试: 20000万个空闲连接

PostgreSQL 13.3

PostgreSQL 14beta1


3.进一步的测试

我们不建空闲连接,直接不断的改变连接数,看看解结果是怎样的:

压测时只改变上面的 -c 的连接数。测试的过程这里就不写出来,直接给出结果:

连接数PostgreSQL 13.3PostgreSQL 14beta1
64
496841513140
128
528556
552778
256
475030
497435
1000
347863
402369
5000205857
310090
10000
124371
248701

结论

PostgtreSQL 14可以支持大量的空闲连接,这些空闲连接对执行的SQL的性能影响很小,但在PostgreSQL 13,会有很大的影响。所以从PostgreSQL 14之后,数据库可以支持上万个空闲连接,以前为了支持很多连接需要上连接池,现在可以不用了。

原理简介

PostgreSQL 14主要是优化了 GetSnapshotData() 的性能,原先是随连接数增加,这个函数的性能是线性下降,从PostgreSQL 14之后就不是了。这个优化总共提交了7个PATCH,如果想进一步了解的同学可以见:

  1. snapshot scalability: Don’t compute global horizons while building snapshots.

  2. snapshot scalability: Move PGXACT->xmin back to PGPROC.

  3. snapshot scalability: Move PGXACT->vacuumFlags to ProcGlobal->vacuumFlags.

  4. snapshot scalability: Move subxact info to ProcGlobal, remove PGXACT.

  5. snapshot scalability: Introduce dense array of in-progress xids.

  6. snapshot scalability: cache snapshots using a xact completion counter.

  7. Fix race condition in snapshot caching when 2PC is used.


本站文章,未经作者同意,请勿转载,如需转载,请邮件customer@csudata.com.

文章转载自中启乘数,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论