阿里云 云数据库 MySQL 版 性能白皮书 文档版本 :20170424
性能白皮书 / 法律声明 法律声明 阿里云提醒您在阅读或使用本文档之前仔细阅读 充分理解本法律声明各条款的内容 如果您阅读或使用本文档, 您的阅读或使用行为将被视为对本声明全部内容的认可 1. 您应当通过阿里云网站或阿里云提供的其他授权通道下载 获取本文档, 且仅能用于自身的合法合规的业务活动 本文档的内容视为阿里云的保密信息, 您应当严格遵守保密义务 ; 未经阿里云事先书面同意, 您不得向任何第三方披露本手册内容或提供给任何第三方使用 2. 未经阿里云事先书面许可, 任何单位 公司或个人不得擅自摘抄 翻译 复制本文档内容的部分或全部, 不得以任何方式或途径进行传播和宣传 3. 由于产品版本升级 调整或其他原因, 本文档内容有可能变更 阿里云保留在没有任何通知或者提示下对本文档的内容进行修改的权利, 并在阿里云授权通道中不时发布更新后的用户文档 您应当实时关注用户文档的版本变更并通过阿里云授权渠道下载 获取最新版的用户文档 4. 本文档仅作为用户使用阿里云产品及服务的参考性指引, 阿里云以产品及服务的 现状 有缺陷 和 当前功能 的状态提供本文档 阿里云在现有技术的基础上尽最大努力提供相应的介绍及操作指引, 但阿里云在此明确声明对本文档内容的准确性 完整性 适用性 可靠性等不作任何明示或暗示的保证 任何单位 公司或个人因为下载 使用或信赖本文档而发生任何差错或经济损失的, 阿里云不承担任何法律责任 在任何情况下, 阿里云均不对任何间接性 后果性 惩戒性 偶然性 特殊性或刑罚性的损害, 包括用户使用或信赖本文档而遭受的利润损失, 承担责任 ( 即使阿里云已被告知该等损失的可能性 ) 5. 阿里云网站上所有内容, 包括但不限于著作 产品 图片 档案 资讯 资料 网站架构 网站画面的安排 网页设计, 均由阿里云和 / 或其关联公司依法拥有其知识产权, 包括但不限于商标权 专利权 著作权 商业秘密等 非经阿里云和 / 或其关联公司书面同意, 任何人不得擅自使用 修改 复制 公开传播 改变 散布 发行或公开发表阿里云网站 产品程序或内容 此外, 未经阿里云事先书面同意, 任何人不得为了任何营销 广告 促销或其他目的使用 公布或复制阿里云的名称 ( 包括但不限于单独为或以组合形式包含 阿里云 Aliyun 万网 等阿里云和 / 或其关联公司品牌, 上述品牌的附属标志及图案或任何类似公司名称 商号 商标 产品或服务名称 域名 图案标示 标志 标识或通过特定描述使第三方能够识别阿里云和 / 或其关联公司 ) 6. 如若发现本文档存在任何错误, 请与阿里云取得直接联系 文档版本 :20170424 I
性能白皮书 / 目录 目录 法律声明... I 目录... II 1. RDS 介绍... 1 2. 测试方法... 2 2.1. 测试环境... 2 2.2. 测试工具... 3 2.2.1. SysBench 简介... 3 2.2.2. 安装方法... 3 2.3. 测试命令... 3 2.3.1. 准备数据... 3 2.3.2. 压测性能... 3 2.3.3. 清理环境... 3 2.4. 测试模型... 4 2.4.1. 库表结构... 4 2.4.2. 数据格式... 4 2.4.3. SQL 样式... 4 2.5. 测试指标... 5 3. MySQL 5.6... 6 3.1. 规格列表... 6 3.1.1. 通用型... 6 3.1.2. 独享型... 6 3.2. 测试结果... 7 文档版本 :20170424 2
性能白皮书 /RDS 介绍 1. RDS 介绍 云数据库 RDS(Relational Database Service) 是一种稳定可靠 可弹性伸缩的在线数据库服务 基于飞天分布式系统和全 SSD 盘高性能存储, 支持 MySQL SQL Server PostgreSQL 和 PPAS( 高度兼容 Oracle) 引擎, 默认部署主备架构且提供了容灾 备份 恢复 监控 迁移等方面的全套解决方案, 彻底解决数据库运维的烦恼 云数据库 RDS 提供了按量付费和包年包月两种付费方式, 用户可以根据业务压力配置 RDS 实例的规格 其中 : 1 按量付费实例支持随时随地进行规格的升降级 ; 2 包年包月实例支持随时升级和续费升降级 在面对极限的业务压力时, 用户还可以随时升级到 RDS 独占主机规格来度过意料外的状况 文档版本 :20170424 1
性能白皮书 / 测试方法 2. 测试方法 2.1. 测试环境 所有测试均在华东 2( 上海 ) 地域的可用区 B 完成 测试用的 ECS 为系列 II 实例, 配置为 8 核 16GB, 网络类型为经典网络 压测用的镜像为 CentOS 7.0 64 位 文档版本 :20170424 2
性能白皮书 / 测试方法 2.2. 测试工具 2.2.1. SysBench 简介 SysBench 是一个跨平台且支持多线程的模块化基准测试工具, 用于评估系统在运行高负载的数据库时相关核心参数的性能表现 它目的是为了绕过复杂的数据库基准设置, 甚至在没有安装数据库的前提下, 快速了解数据库系统的性能 2.2.2. 安装方法 本文用的 SysBench 版本为 0.5, 下载地址为 : https://github.com/akopytov/sysbench # yum install gcc gcc-c++ autoconf automake make libtool bzr mysql-devel # unzip ysbench-0.5.zip # cd sysbench-0.5 #./autogen.sh #./configure --prefix=/usr --mandir=/usr/share/man # make # make install 2.3. 测试命令 2.3.1. 准备数据 sysbench --num-threads=32 --max-time=3600 --max-requests=999999999 --test= oltp.lua --oltptable-size=10000000 --oltp-tables-count=64 --db-driver=mysql --mysql-table-engine=innodb -- mysql-host= XXXX --mysql-port=3306 --mysql-user= XXXX --mysql-password= XXXX prepare 2.3.2. 压测性能 sysbench --num-threads=32 --max-time=3600 --max-requests=999999999 --test= oltp.lua --oltptable-size=10000000 --oltp-tables-count=64 --db-driver=mysql --mysql-table-engine=innodb -- mysql-host= XXXX --mysql-port=3306 --mysql-user= XXXX --mysql-password= XXXX run 2.3.3. 清理环境 sysbench --num-threads=32 --max-time=3600 --max-requests=999999999 --test= oltp.lua --oltptable-size=10000000 --oltp-tables-count=64 --db-driver=mysql --mysql-table-engine=innodb -- mysql-host= XXXX --mysql-port=3306 --mysql-user= XXXX --mysql-password= XXXX cleanup 文档版本 :20170424 3
性能白皮书 / 测试方法 2.4. 测试模型 2.4.1. 库表结构 CREATE TABLE `sbtest` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `k` int(10) unsigned NOT NULL DEFAULT '0', `c` char(120) NOT NULL DEFAULT '', `pad` char(60) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `k_1` (`k`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 2.4.2. 数据格式 id: 1 k: 3718516 c: 08566691963-88624912351-16662227201-46648573979-64646226163-77505759394- 75470094713-41097360717-15161106334-50535565977 pad: 63188288836-92351140030-06390587585-66802097351-49282961843 2.4.3. SQL 样式 查询 : SELECT c FROM sbtest64 WHERE id=4957216 SELECT c FROM sbtest43 WHERE id BETWEEN 4573346 AND 4573346+99 SELECT SUM(K) FROM sbtest57 WHERE id BETWEEN 5034894 AND 5034894+99 SELECT DISTINCT c FROM sbtest50 WHERE id BETWEEN 4959831 AND 4959831+99 ORDER BY c 写入 : INSERT INTO sbtest3 (id, k, c, pad) VALUES (4974042, 4963580, '33958272865-80411528812- 36334179010-84793024318-25708692091-43736213170-37853797624-40480626242- 32131452190-24509204411', '07716658989-39745043214-17284860193-80004426880- 14154945098') 更新 : UPDATE sbtest11 SET k=k+1 WHERE id=5013989 UPDATE sbtest14 SET c='10695174948-02130015518-68664370682-70336600207- 55943744221-72419172189-36252607855-75106351226-86920614936-86254476316' WHERE id=5299388 删除 : 文档版本 :20170424 4
性能白皮书 / 测试方法 DELETE FROM sbtest33 WHERE id=5002332 2.5. 测试指标 TPS Transaction Per Second, 数据库每秒执行的事务数, 以 commit 为准 QPS Query Per Second, 数据库每秒执行的 SQL 数 ( 含 insert select update delete 等 ) 文档版本 :20170424 5
性能白皮书 /MySQL 5.6 3. MySQL 5.6 3.1. 规格列表 3.1.1. 通用型 规格编号 CPU/Core 内存 /GB 连接数 IOPS TPS QPS rds.mysql.t1.small 1 1 300 600 126 1464 rds.mysql.s1.small 1 2 600 1000 153 1950 rds.mysql.s2.large 2 4 1200 2000 261 4703 rds.mysql.s2.xlarge 2 8 2000 4000 314 5662 rds.mysql.s3.large 4 8 2000 5000 560 10896 rds.mysql.m1.medium 4 16 4000 7000 685 12337 rds.mysql.c1.large 8 16 4000 8000 982 20879 rds.mysql.c1.xlarge 8 32 8000 12000 1308 23555 rds.mysql.c2.xlarge 16 64 16000 14000 2040 41530 rds.mysql.c2.xlp2 16 96 24000 16000 2366 45000 3.1.2. 独享型 规格编号 CPU/Core 内存 /GB 连接数 IOPS TPS QPS mysql.x8.medium.2 2 16 2500 4500 369 6653 mysql.x8.large.2 4 32 5000 9000 940 19000 mysql.x8.xlarge.2 8 64 10000 18000 1565 28179 mysql.x8.2xlarge.2 16 128 20000 36000 3100 62600 rds.mysql.st.d13 30 220 64000 20000 4176 75163 文档版本 :20170424 6
性能白皮书 /MySQL 5.6 3.2. 测试结果 通用型 50000 45000 40000 35000 30000 25000 20000 15000 10000 5000 0 1464 1950 4703 5662 10896 12337 20879 23555 41530 45000 TPS QPS 80000 独享型 70000 75163 60000 50000 40000 30000 20000 10000 0 62600 28179 19000 6653 2 核 16G 4 核 32G 8 核 64G 16 核 128G 30 核 220G TPS QPS 文档版本 :20170424 7