测试工具
Sysbench 是一款开源的、模块化的、跨平台的多线程基准测试工具,针对在线事务处理(OLTP)场景,Sysbench 可以评估测试数据库在运行高负载时相关核心参数的性能。
SysBench 标准 OLTP 读写混合场景中一个事务包含18个读写 SQL。
SysBench 标准 OLTP 只读场景中一个事务包含14个读 SQL(10条主键点查询、4条范围查询)。
SysBench 标准 OLTP 只写场景中一个事务包含4个写 SQL(2条 UPDATE、1条 DETELE、1条 INSERT)。
测试环境
本文介绍云数据库 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:运行时间
测试方法
说明:
请将以下命令中的 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/shareping
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 |
对应下图所示。