本文介绍了用SysBench工具测试PolarDB for PostgreSQL 14集群的OLTP负载性能的方法,您可以按照本文介绍自行测试对比,快速了解数据库系统的性能。
测试工具
SysBench是一个跨平台且支持多线程的模块化基准测试工具,用于评估系统在运行高负载的数据库时相关核心参数的性能表现。使用SysBench是为了绕过复杂的数据库基准设置,甚至在没有安装数据库的前提下,快速了解数据库系统的性能。
测试环境
- 测试的ECS和PolarDB PostgreSQL版均在同一地域、同一可用区。
- 网络类型均为VPC网络。说明 ECS实例和PolarDB PostgreSQL版集群需保证在同一个VPC中。
- 测试用PolarDB PostgreSQL版集群信息如下:
- 读场景、写场景以及读写混合场景性能测试使用的是两节点集群(一主一只读),同时有一个standby结点。
- 使用的连接串为主结点地址,查看PolarDB PostgreSQL版集群地址请参见申请集群地址和主地址。
- 测试用ECS实例信息如下:
- 实例规格为ecs.c5.4xlarge。
- 实例所使用的镜像为CentOS 7.6 64位。
测试场景
测试PolarDB PostgreSQL版集群(一主一只读、一standby)的读、写、读写环境场景下的性能。
衡量指标
TPS(Transactions Per Second):即数据库每秒执行的事务数,以COMMIT成功次数为准。
安装SysBench
快速安装SysBench的方法如下:
- Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench
- RHEL/CentOS
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench
说明 更多系统的二进制安装命令,请参考sysbench的官方文档。
测试方法
说明 以下测试方法以PolarDB PostgreSQL版为例进行说明。
- 连接PolarDB PostgreSQL版集群地址和端口。具体操作请参见申请集群地址和主地址。
- 连接PolarDB PostgreSQL版集群。具体操作请参见连接数据库集群。
- 在ECS上执行如下命令,以在PolarDB PostgreSQL版集群中创建数据库
textdb
为例。psql -h XXX -p XXX -U XXX -W -c 'create database testdb;'
说明 请将本命令和后续步骤命令中的XXX替换为PolarDB PostgreSQL版集群的集群地址、端口号、用户名。具体参数说明如下:参数 说明 -h PolarDB PostgreSQL版集群的主节点地址。 -p PolarDB PostgreSQL版集群的主节点端口。 -U PolarDB PostgreSQL版集群的用户名。 -W 表明强制使用密码登录。 - 使用SysBench测试PolarDB PostgreSQL版的性能。具体参数说明如下:
参数 说明 --pgsql-password PolarDB PostgreSQL版集群的用户密码。 --pgsql-port PolarDB PostgreSQL版集群的主结点端口。 --pgsql-user PolarDB PostgreSQL版集群的用户名。 --pgsql-host PolarDB PostgreSQL版集群的主节点地址。 说明 具体参数请根据您所在数据库地址、端口等进行修改。- 测试PolarDB PostgreSQL版的写场景性能。
## 准备数据 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare ## 运行 oltp_insert 测试 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_insert run ## 运行 oltp_update_index 测试 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_update_index run ## 运行 oltp_update_non_index 测试 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_update_non_index run ## 运行 oltp_write_only 测试 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_write_only run
- 使用SysBench测试PolarDB PostgreSQL版的读场景性能。
## 准备数据 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare ## 运行 oltp_point_select sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_point_select run ## 运行 oltp_read_only sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only run
- 使用SysBench测试PolarDB PostgreSQL版的读写混合场景性能。
## 准备数据 sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare ## 运行 oltp_read_write sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_write run
- 测试PolarDB PostgreSQL版的写场景性能。
后续步骤
- PolarDB PostgreSQL版与同类PostgreSQL数据库14版本的性能对比请参见与同类PostgreSQL云原生数据库性能对比。
- PolarDB PostgreSQL版与开源PostgreSQL引擎14版本的性能对比请参见 与开源PostgreSQL性能对比。