OneSQL,为高并发、高可靠的关键业务场景定制的PostgreSQL增强版本,100%兼容开源。

OneSQL for PostgreSQL是一个与开源版本100%兼容的高级定制版,得益于OneSQL for MySQL在客户真实业务场景中的优异表现,将多队列线程池的概念迁移到PostgreSQL代码上,使PostgreSQL在CPU资源不够并且高并发的情况下,可以稳定保持优异的性能。考虑到真实环境中不是所有的语句都能使用一次prepare,多次execute的情况,在这里使用非prepare的方式,对OneSQL for PostgreSQL进行了高并发(从256-2048个连接)的压测,压测工具为sysbench 1.0版本。

接下来可以看一下测试的结果,所有图中X轴表示并发的客户端连接数,Y轴表示TPS或QPS的值,不同的线代表OneSQL for PostgreSQL不同的并发参数配置,其中有一根线表示原生开源版本的测试结果。先来看一下对查询语句的测试,设置onesql query concurrency为8个并发(了解更多新增参数),压测结果如下:

onepgsql_thread_pool_test6

接下来测试非事务方式的DML操作,设置onesql autocommit concurrency为几个不同的值(参考测试方法),压测结果如下:

onepgsql_thread_pool_test3

然后测试事务场景,设置onesql transaction concurrency为不同的值(见图中的数值),第一次测试时,只禁用了range scan(否则网卡打满),一个事务由10个主键查询和5个DML语句构成,压测结果如下:

onepgsql_thread_pool_test4

第二次测试事务时,将主键查询调到1次,即事务由1个主键查询和5个DML语句构成,压测结果如下:

onepgsql_thread_pool_test5

再来做一次执点行更新的测试,假设有大量的并发来更新小量的记录,为似电商业务中的秒杀,测试结果如下所示:

onepgsql_thread_pool_test7

使用sysbench压测时,并没有使用Prepare接口,接下来使用pgbench来测试一下使用Prepare接口的事务性能,结果如下图所示:

onepgsql_thread_pool_test8

可以看到超过1000并发以上时,OneSQL for PostgreSQL开始呈现出明显的性能优势,到2048个并发时,DML语句模式和事务模式下,相比原生版本提升5-10倍。针对记录锁冲突比较历害的场景,从256个连接开始就有极大的优势。从多次测试的结果来看,在连接数较少时,OneSQL for PostgreSQL也其本上无性能损失,而连接到1024以上时,只要不是纯读的操作,OneSQL for PostgreSQL都大幅度领先,可以在有限的CPU资源(比如公有云的虑拟主机上)下,取得5-10数倍的性能提升,完全解决了PostgreSQL在高并发下的性能问题。