本文介绍RDS MySQL实例性能测试的方法。
前提条件
背景信息
实例性能测试的指标包括:
- 每秒执行事务数TPS(Transactions Per Second)
数据库每秒执行的事务数,以COMMIT成功次数为准。
- SysBench标准OLTP读写混合场景中一个事务包含18个读写SQL。
- SysBench标准OLTP只读场景中一个事务包含14个读SQL(10条主键点查询、4条范围查询)。
- SysBench标准OLTP只写场景中一个事务包含4个写SQL(2条UPDATE、1条DETELE、1条INSERT)。
- 每秒执行请求数QPS(Queries Per Second)
数据库每秒执行的SQL数,包含INSERT、SELECT、UPDATE、DETELE、COMMIT等。
SysBench参数说明
参数 | 说明 |
db-driver | 数据库引擎。 |
mysql-host | RDS实例连接地址。 |
mysql-port | RDS实例连接端口。 |
mysql-user | RDS实例账号。 |
mysql-password | RDS实例账号对应的密码。 |
mysql-db | RDS实例数据库名。 |
table_size | 测试表大小。 |
tables | 测试表数量。 |
events | 测试请求数量。 |
time | 测试时间。 |
threads | 测试线程数。 |
percentile | 需要统计的百分比,默认值为95%,即请求在95%的情况下的执行时间。 |
report-interval | 表示N秒输出一次测试进度报告,0表示关闭测试进度报告输出,仅输出最终的报告结果。 |
skip-trx | 是否跳过事务。
|
性能测试步骤
本文以CentOS系统为例,演示性能测试的步骤。
- 登录ECS实例,通过如下步骤安装SysBench。
sudo yum install gcc gcc-c++ autoconf automake make libtool mysql-devel git mysql git clone https://github.com/akopytov/sysbench.git ##从Git中下载Sysbench cd sysbench ##打开sysbench目录 git checkout 1.0.18 ##切换到sysbench 1.0.18版本 ./autogen.sh ##运行autogen.sh ./configure --prefix=/usr --mandir=/usr/share/man make ##编译 make install
- 进行性能测试,包括OLTP读写混合场景压测、OLTP只读场景压测和OLTP只写场景压测。
- OLTP读写混合场景压测
参见如下命令进行测试,参数说明请参见SysBench参数说明。
##准备数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_read_write prepare ##运行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --report-interval=1 oltp_read_write run ##清理数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_read_write cleanup
测试结果示例如下:
- QPS:23869.32
- TPS:1193.47
- 响应时间(RT):36.89 ms
- OLTP只读场景压测
参见如下命令进行测试,参数说明请参见SysBench参数说明。
##准备数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_read_only prepare ##运行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --skip-trx=1 --report-interval=1 oltp_read_only run ##清理数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_read_only cleanup
测试结果示例如下:
- QPS:26130.73
- 响应时间(RT):33.72 ms
- OLTP只写场景压测
参见如下命令进行测试,参数说明请参见SysBench参数说明。
##准备数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_write_only prepare ##运行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --report-interval=1 oltp_write_only run ##清理数据 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_write_only cleanup
测试结果示例如下:
- TPS:4255.01
- 响应时间(RT):16.71 ms
说明 SysBench工具有很多标准压测模型,您可以根据自己的业务场景选择合适的模型使用。 - OLTP读写混合场景压测