一、测试工具
·SysBench 标准 OLTP 读写混合场景中一个事务包含18个读写 SQL。
·SysBench 标准 OLTP 只读场景中一个事务包含14个读 SQL(10条主键点查询、4条范围查询)。
·SysBench 标准 OLTP 只写场景中一个事务包含4个写 SQL(2条 UPDATE、1条 DELETE、1条 INSERT)。
本压测使用 SysBench1.1.0版本。更多信息,请参见 Sysbench 产品文档。
二、测试环境
云数据库 PostgreSQL 性能测试所使用的环境如下:
·地域/可用区:北京 – 北京七区。
·客户端:云服务器标准型 S6(16核32GB,SSD 云硬盘)5Mbps。
·客户端操作系统:TencentOS Server2.6(Final) 64位。
·网络:云服务器 CVM 和云数据库 PostgreSQL 实例网络类型均为私有网络(VPC)且在同一子网下。
测试的云数据库 PostgreSQL 实例信息如下:
·存储类型:通用型 – 本地高性能 SSD 盘,8核32GB。
·实例架构:双机高可用(一主一从)- 读写实例。
·实例版本:V14.2。
·主备复制方式:异步复制。
三、测试指标
云数据库 PostgreSQL 性能测试的测试指标如下:
| 指标 | 定义 |
| QPS(Queries Per Second) | 数据库每秒执行的 SQL 数,包含 INSERT、SELECT、UPDATE、DELETE、COMMIT 等。 |
| 并发 | 性能测试时客户端发起的并发数。 |
四、参数说明
·pgsql-host:云数据库 PostgreSQL 实例的内网地址
·pgsql-port:云数据库 PostgreSQL 实例的端口号
·pgsql-user:云数据库 PostgreSQL 实例的用户名
·pgsql-password:上述用户名对应的密码
·pgsql-db:数据库名
·table_size:单表数据量
·tables:表总数
·threads:并发线程数
·time:运行时间(单位s)
五、测试方法
注意:说明:
注意:请将以下命令中的 XXX 替换为云数据库 PostgreSQL 测试实例的内网地址、端口号、用户名、用户密码、数据库名,以及对应测试场景的单表数据量和表总数。
1. 准备数据。
sysbench /usr/local/share/sysbench/oltp_write_only.lua –db-driver=pgsql –pgsql-host=XXX –pgsql-port=XXX –pgsql-user=XXX –pgsql-password=XXX –pgsql-db=XXX –table-size=XXX –tables=XXX prepare
2. 运行命令,进行压测。
sysbench /usr/local/share/sysbench/oltp_read_write.lua –db-driver=pgsql –pgsql-host=XXX –pgsql-port=XXX –pgsql-user=XXX –pgsql-password=XXX –pgsql-db=XXX –table-size=XXX –tables=XXX –threads=XXX –time=XXX –report-interval=1 run
3. 清理数据。
sysbench /usr/local/share/sysbench/oltp_write_only.lua –db-driver=pgsql –pgsql-host=XXX –pgsql-port=XXX –pgsql-user=XXX –pgsql-password=XXX –pgsql-db=XXX –table-size=XXX –tables=XXX cleanup
六、测试结果
下表为单表数据量(table_size)为25000,表总数(tables)为64,测试条件下各个场景的 QPS 性能对比。
| 并发 | 未开审计 | 审计极速版 | 审计精细版 | 设置 log_statement=all |
| 8 | 64435.35 | 63150.59 | 60371.58 | 59686.77 |
| 16 | 114649.43 | 110425.06 | 107427.92 | 99278.01 |
| 32 | 118850.71 | 108233.97 | 106368.01 | 87540.78 |
| 64 | 97012.02 | 88828.3 | 85892.76 | 23017.53 |
| 128 | 76381.21 | 70592.04 | 69241.45 | 11799.92 |
对应下图所示。