本文介绍RDS MySQL 5.7通用型实例的性能测试结果。
为了更接近生产环境,本次压测取60秒的读写次数总量(Reads/Writes)作为测试指标。
以下性能测试结果仅供参考。为了帮助您更好地了解和使用RDS MySQL 5.7版本实例,请参见性能优化与诊断。
测试环境
本次压测采用业界标准的SysBench,分别对RDS MySQL的5个本地盘规格进行性能测试。
实例规格:rds.mysql.t1.small、rds.mysql.s2.large、rds.mysql.m1.medium、rds.mysql.c1.xlarge、rds.mysql.c2.xlarge
实例规格族:通用型
实例系列:高可用系列
实例存储类型:本地盘
测试限制
由于数据量、压测时长、参数配置会大幅影响性能数据,本测试做如下限制:
数据量:对不同实例规格配置不同的表个数和表数据量。部分规格看似测试结果相近,其实是整体数据量不同。
压测时长:由于不同压测时长对测试结果影响较大,因此本次压测时长统一为60秒。
参数配置:
sync_binlog=1
、innodb_flush_log_at_trx_commit=1
:确保每次提交的数据完整写入磁盘中。rpl_semi_sync_master_enabled=ON
:开启数据库半同步模式,保证主备库数据的一致性。Performance_schema=ON
:内存大于等于8 GB的实例规格默认开启Performance Schema。说明上述参数为RDS MySQL标准参数模板,统一参数模板可在最大程度上保证数据一致性,同时更加接近生产环境。
测试结果
本次压测分两个场景进行,您可以根据自身数据量判断使用哪种场景。
内存命中型:适用于数据量较小的场景,可将数据全量放入Buffer Pool进行存取。如何更改Buffer Pool大小,请参见调整实例Buffer Pool大小。
磁盘I/O型:适用于数据量大的场景,只将最常访问的数据放入Buffer Pool进行存取,压测时会读写磁盘以及更新Buffer Pool。
场景一:内存命中型
规格 | 单表数据量 | 表数量 | 最大连接数 | IOPS | Sysbench线程数 | Sysbench读取 (单位:次) | SysBench写入 (单位:次) |
1核1 GB (rds.mysql.t1.small) | 25000 | 32 | 300 | 600 | 8 | 539252 | 154072 |
2核4 GB (rds.mysql.s2.large) | 25000 | 32 | 1200 | 2000 | 8 | 1145200 | 327200 |
4核16 GB (rds.mysql.m1.medium) | 25000 | 128 | 4000 | 7000 | 16 | 2224362 | 635532 |
8核32 GB (rds.mysql.c1.xlarge) | 25000 | 128 | 8000 | 12000 | 32 | 3747898 | 1070828 |
16核64 GB (rds.mysql.c2.xlarge) | 25000 | 128 | 16000 | 14000 | 64 | 6779248 | 1936928 |
场景二:磁盘I/O型
规格 | 单表数据量 | 表数量 | 最大连接数 | IOPS | Sysbench线程数 | Sysbench读取 (单位:次) | SysBench写入 (单位:次) |
1核1 GB (rds.mysql.t1.small) | 80000 | 32 | 300 | 600 | 8 | 412356 | 117816 |
2核4 GB (rds.mysql.s2.large) | 80000 | 32 | 1200 | 2000 | 8 | 1074525 | 307036 |
4核16 GB (rds.mysql.m1.medium) | 800000 | 128 | 4000 | 7000 | 16 | 1645154 | 470044 |
8核32 GB (rds.mysql.c1.xlarge) | 800000 | 128 | 8000 | 12000 | 32 | 3283966 | 938276 |
16核64 GB (rds.mysql.c2.xlarge) | 800000 | 128 | 16000 | 14000 | 64 | 6233850 | 1781100 |