简介

云数据库RDS for MySQL是一种云托管的数据库服务,它提供了一种便捷的方式来部署、管理和扩展MySQL数据库,本文将详细介绍如何使用SysBench工具对RDS for MySQL 5.7版本进行性能测试,并展示具体的测试数据和结果分析。
SysBench工具介绍与安装
1. SysBench工具简介
工具功能:SysBench是一个跨平台且支持多线程的模块化基准测试工具,用于评估系统在运行高负载的数据库时相关核心参数的性能表现,它可以绕过复杂的数据库基准设置,甚至在没有安装数据库的前提下,快速了解数据库系统的性能。
应用场景:适用于需要大规模数据库性能测试的场景,能够模拟不同的数据库操作,如读取、写入等。
2. SysBench的安装方法
环境准备:在ECS实例上通过执行一系列命令安装必要的软件包和SysBench。

1. 安装依赖包:sudo yum install gcc gccc++ autoconf automake make libtool bzr mysqldevel git mysql
2. 克隆SysBench代码:git clone https://github.com/akopytov/sysbench.git
3. 切换到指定版本:git checkout 1.0.20
4. 编译安装SysBench:执行./autogen.sh
、./configure prefix=/usr mandir=/usr/share/man
、make
及make install
命令。
RDS for MySQL 5.7性能测试
为了更接近生产环境,本次压测取60秒的读写次数总量(Reads/Writes)作为测试指标,测试采用业界标准的SysBench工具,分别对RDS MySQL的多个本地盘规格进行性能测试。
1. 测试环境

实例规格族:通用型
实例系列:高可用系列
实例存储类型:本地盘
测试限制:数据量、压测时长、参数配置等因素会影响性能数据,因此测试中进行了相应的限制。
2. 参数配置
为了保证数据的一致性和可靠性,统一使用以下参数模板:
sync_binlog=1
innodb_flush_log_at_trx_commit=1
rpl_semi_sync_master_enabled=ON
Performance_schema=ON
(内存大于等于8 GB的实例规格默认开启Performance Schema)
3. 测试结果
测试分为两个场景:内存命中型和磁盘I/O型,具体测试数据如下:
场景一:内存命中型
规格 | 单表数据量 | 表数量 | 最大连接数 | IOPS | Sysbench线程数 | Sysbench读取(单位:次) | SysBench写入(单位:次) |
rds.mysql.t1.small | 25,000 | 32 | 300 | 600 | 8 | 539,252 | 154,072 |
rds.mysql.s2.large | 25,000 | 32 | 1,200 | 2,000 | 8 | 1,145,200 | 327,200 |
rds.mysql.m1.medium | 25,000 | 128 | 4,000 | 7,000 | 16 | 2,224,362 | 635,532 |
rds.mysql.c1.xlarge | 25,000 | 128 | 8,000 | 12,000 | 32 | 3,747,898 | 1,070,828 |
rds.mysql.c2.xlarge | 25,000 | 128 | 16,000 | 14,000 | 64 | 6,779,248 | 1,936,928 |
场景二:磁盘I/O型
规格 | 单表数据量 | 表数量 | 最大连接数 | IOPS | Sysbench线程数 | Sysbench读取(单位:次) | SysBench写入(单位:次) |
rds.mysql.t1.small | 80,000 | 32 | 300 | 600 | 8 | 412,356 | 117,816 |
rds.mysql.s2.large | 80,000 | 32 | 1,200 | 2,000 | 8 | 1,074,525 | 307,036 |
rds.mysql.m1.medium | 800,000 | 128 | 4,000 | 7,000 | 16 | 1,645,154 | 470,044 |
rds.mysql.c1.xlarge | 800,000 | 128 | 8,000 | 12,000 | 32 | 3,283,966 | 938,276 |
rds.mysql.c2.xlarge | 800,000 | 128 | 16,000 | 14,000 | 64 | 6,233,850 | 1,781,100 |
性能优化建议
基于上述测试数据,以下是一些性能优化的建议:
1、调整Buffer Pool大小:根据数据量适当调整Buffer Pool的大小,以提高内存命中率。
2、优化读写策略:针对不同的数据访问模式(内存命中型或磁盘I/O型),调整读写策略以优化性能。
3、配置内核参数:合理配置内核参数可以减少CPU之间的上下文切换,提高处理效率。
相关FAQs
1. SysBench如何安装在其他环境中而不仅仅是ECS实例?
在非ECS环境中安装SysBench的基本步骤类似,但可能需要根据具体操作系统和环境调整依赖包的安装命令及SysBench的编译选项,基本步骤包括安装依赖、下载SysBench代码、切换到指定版本、编译并安装SysBench。
2. RDS for MySQL性能测试中的内存命中型和磁盘I/O型有什么区别?
内存命中型测试主要适用于数据量较小的场景,可以将全部数据加载到Buffer Pool中进行存取操作,这种场景下内存的I/O能力是性能的关键因素,而磁盘I/O型测试则适用于数据量较大的场景,最常访问的数据被加载到Buffer Pool中,同时会频繁地进行磁盘读写以及更新Buffer Pool的操作,这种场景下磁盘的I/O能力对性能影响较大。