Sysbench
测试环境
- 区域:华东-上海二
- 可用分区:可用区4
- 分片数:16个
- 逻辑表数量:1个
- 数据量:3.2亿
- RDS规格:8vCPUs | 16GB,16vCPUs | 32GB,32vCPUs | 64GB, 存储类型为“超高IO”
- 压力机(1台sysbench):32U64G
测试环境不同,测试结果可能会有小范围的波动,此为正常现象。
测试工具
Sysbench是一款基于LuaJIT的,模块化多线程基准测试工具,常用于数据库基准测试。通过内置的数据库测试模型,采用多线程并发操作来评估数据库的性能。了解Sysbench更多详情,请访问https://github.com/akopytov/sysbench。
本次测试使用的Sysbench版本为1.0.20,具体的安装命令如下:
# wget -c https://github.com/akopytov/sysbench/archive/1.0.20.zip
# yum install autoconf libtool mysql mysql-devel vim unzip
# unzip 1.0.20.zip
# cd sysbench-1.0.20
# ./autogen.sh
# ./configure
# make
# make install
测试步骤
请根据实际信息,替换数据库、连接IP与用户密码。
- 导入测试数据。
- 创建逻辑库。
- 使用命令行登录到DDM数据库中,创建表。
id int UNSIGNED NOT NULL auto_increment PRIMARY KEY,
k INTEGER UNSIGNED DEFAULT '0' NOT NULL,
c varCHAR(1200) DEFAULT '' NOT NULL,
pad varCHAR(1200) DEFAULT '' NOT NULL
) dbpartition by hash(id);
- 使用sysbench命令导入测试数据到数据库中。
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=1 --report-interval=5 --oltp-table-size=<data> --mysql-user=<user> --mysql-password=<password> --mysql-table-engine=innodb --rand-init=on --mysql-host=<host> --mysql-port=5066 --mysql-db=<db-name> --max-time=300 --max-requests=0 --oltp_skip_trx=off --oltp_auto_inc=on --oltp_range_size=5 --num-threads=256 --oltp_secondary --id-start-val=1 --id-step-val=1000 prepare
注释掉common.lua脚本里的db_query(query)这一行。
- 压测数据。
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp_tables_count=1 --report-interval=1 --oltp-table-size=<data> --mysql-user=<user> --mysql-password=<password> --mysql-table-engine=innodb --rand-init=on --mysql-host=<host> --mysql-port=5066 --mysql-db=<db_name> --max-time=300 --max-requests=0 --oltp_skip_trx=off --oltp_auto_inc=on --oltp_range_size=5 --num-threads=256 --oltp_secondary --forced-shutdown=0 run
- 清理数据。
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-db=<db_name> --mysql-user=<user> --mysql-password=<password> --mysql-port=5066 --mysql-host=<host> --oltp-tables-count=64 --oltp-table-size=<data> --max-time=3600 --max-requests=0 --num-threads=200 cleanup
概念解释
- TPS:Transaction Per Second,数据库每秒执行的事务数。
- QPS:Query Per Second,数据库每秒执行的SQL数,包含INSERT、SELECT、UPDATE、DELETE等。
测试数据
规格描述 |
规格值--sysbench oltp场景 |
备注 |
||
DDM |
并发数 |
TPS |
QPS |
|
1*8U16G |
512 |
2168.748 |
43389.45 |
RDS实例规格:2*8U16G,超高IO |
1*16U32G |
512 |
4117.23 |
82362.996 |
RDS实例规格:2*16U32G,超高IO |
1*32U64G |
1000 |
5627.754 |
112585.59 |
RDS实例规格:2*32U64G,超高IO |
DDM内核具备一定的过载保护能力,在过载后会触发一些列动作,例如尝试释放长时间占用系统资源的语句。触发过载保护后压测结果曲线可能会观测到抖动。触发过载说明性能已达到瓶颈,继续加压已无法获得性能提升,请尝试降低压力以获取更高的性能表现。