简介: 云,为IT基础设施的构建带来很大的便利性。数据库,作为云中非常重要的一类产品,正有越来越多的客户选择使用。但在使用云端数据库时,经常有两类做法:一是通过ECS自建数据,二是直接使用云提供的数据库产品。那么这两类做法,有什么差异?用户又该如何选择呢?

本文作者:韩锋,阿里云数据库高级产品专家

下面通过在阿里云平台的一组测试,给你带来答案!

1. 测试概述

本测试对比了阿里云中ECS自建数据库(5.7/8.0版本)和RDS通用实例,在OLTP读写混合模型下的性能。测试使用了标准的sysbench 1.0工具,选择规格是用户最普遍使用的4核16GB规格数据库,其中innodb_buffer_pool_size =12G。

1).测试场景

一共测试了3个场景,分别为:

  • 内存命中型(CPU先到达瓶颈)150张表,每张表25000行数据,数据量大约2GB。
  • 小规模IO型(CPU先到达瓶颈)150张表,每张表120万行数据,数据量大约50GB。
  • 大规模IO型(IOPS先到达瓶颈)150张表,每张表500万行数据,数据量大约200GB。

2).测试结论

  • 在CPU先到达瓶颈的场景下,RDS通用实例相比于ECS本地盘自建,性能优势比较大。
  • 在IOPS先到达瓶颈的场景下,RDS通用实例相比于ECS本地盘自建,性能优势不大。
  • 在3个场景中,RDS通用实例相比于ECS本地盘自建,均有一定的性能优势,且整体表现稳定。

2. 测试环境

  • ECS自建环境的MySQL,采用了主从架构。
  • RDS采用4C 16GB,本地SSD,高可用版通用型,主从架构。
  • ECS自建MySQL与RDS,使用了相同的配置模板。

3. 测试数据(场景:内存命中型)

1).MySQL5.7 高性能模板

  • 在不同并发条件下,RDS均较ECS自建MySQL性能更优。
  • 在低并发(并发度=16)条件下,RDS性能表现更为突出。其QPS指标比ECS本地盘高87%。
  • 开源MySQL没有线程池功能,高并发下抖动大。

2).MySQL8.0 高性能模板

  • 在不同并发条件下,RDS均较ECS自建MySQL性能更优。
  • 在低并发(并发度=16)条件下,RDS性能表现更为突出。其QPS指标比ECS本地盘高70%。
  • 开源MySQL没有线程池功能,高并发下抖动非常大,基本处于不可用状态。

4. 测试数据(场景:小规模IO型)

1).MySQL5.7 高性能模板

  • 在不同并发条件下,RDS均较ECS自建MySQL性能更优。
  • 在低并发(并发度=16)条件下,RDS性能表现更为突出。其QPS指标比ECS本地盘高107%。
  • 开源MySQL没有线程池功能,高并发下抖动非常大。

2).MySQL8.0 高性能模板

  • 在不同并发条件下,RDS均较ECS自建MySQL性能更优。
  • 在低并发(并发度=16)条件下,RDS性能表现更为突出。其QPS指标比ECS本地盘高82%。
  • 开源MySQL没有线程池功能,高并发下抖动非常大,基本处于不可用状态。

❖ CPU先达到瓶颈

  • 16个并发时,RDS的cpu开始打满。整个压测过程中,IOPS并未到达瓶颈。
  • ECS本地盘的监控信息显示,读和写的IOPS一直在3000左右,峰值读3000,写6000左右。

5. 测试数据(场景:大规模IO型)

1).MySQL5.7 高性能模板

  • 在不同并发条件下,RDS均较ECS自建MySQL性能占优。
  • 因为RDS的IOPS先到达瓶颈。整个压测过程中,RDS的QPS相对于ECS本地盘的优势不是太大,高10%左右。
  • 读写IOPS较大,ECS+ESSD云盘的性能劣势可以体现出来。
  • 开源MySQL没有线程池功能,高并发下抖动非常大。

❖ IO先达到瓶颈

  • 压测过程中,RDS的cpu未用满。IOPS到达瓶颈,物理读维持在6000左右。

  • ECS本地盘,IOPS超过了RDS的使用限额(7000)。
  • ECS的CPU可以用满。

2).MySQL8.0 高性能模板

  • RDS在IO压力很大下,性能表现依然平稳。
  • 因RDS的IOPS先到达瓶颈。压测过程中,RDS的QPS相对于ECS本地盘的优势没有上一场景大。
  • 读写IOPS较大,ECS+ESSD云盘的性能劣势凸显,衰减严重。
  • 开源MySQL8.0在高IO情况下,性能退化严重。

6. 从测试中获得...

通过上述测试数据可以看出,RDS较ECS自建模式在性能表现上更为出色。这主要是基于云厂商多年在数据库领域的实践深度优化所得。当然,用户在做选择时,不能仅仅依据性能表现,而应该基于更多维度考量。下表简列一二,供各位参考。

  • RDS本身具有极高的可用性,自建方式需用户维护。
  • 外围功能(例监控、备份、优化等),自建方式需用户构建。
  • 自建方式的自主性较大,用户可定制化自身需求。

BTW:如何获得高性能参数模板

在购买RDS步骤“实例配置”中,可在如下位置选择“高性能参数模板”

阿里云RDS vs 自建MySQL,这篇评测终结你的选择困难症!相关推荐

  1. 记一次阿里云RDS与自建数据库同步中断的补救过程

    背景 2018年4月24日上午9点左右,小编在即将托管的服务器上建立数据库,并通过openvpn建立加密隧道,从而实现阿里云RDS和本地自建数据库之间同步.在托管服务器上配置openvpn后,重启op ...

  2. mysql主从复制,主阿里云RDS,从本地mysql情况

    业务技术背景: 一个数据库性能不够,所以采用读写分离,所以必须自己搭建mysql自动主从同步! 以下演示是阿里云RDS为主库,本地的mysql为从库的情况: 如果两个都是自己安装的mysql,请参考这 ...

  3. 阿里云mysql数据库引擎_在阿里云RDS数据库服务器中将MySQL InnoDB引擎表转为压缩格式...

    今年以来将我们以前托管或者租用的服务器全面转向阿里云,除了采用ECS服务器以外,还有一项重要的是采用了RDS数据库服务器,这对于服务的稳定性.各项指标的监控.调优等都有帮助. 不过随着近期更多数据库转 ...

  4. 本地mysql备份至rds_阿里云RDS备份在本地mysql快速还原

    本地准备: ##安装和RDS相同的mysql版本,拿mysql5.6为例 ##安装Xtrabackup 包 cd /data/source wget https://www.percona.com/d ...

  5. 自建MySQL和阿里云RDS的区别 有必要使用云数据库吗?...

    很多阿里云ECS用户都会考虑是使用ECS自建数据库还是使用阿里云的RDS云数据库,如何选择?有必要使用云数据库吗?云吞铺子告诉你使用阿里云RDS云数据库的理由: RDS的高可用性 RDS提供了主备双节 ...

  6. oracle rds 运维服务_从运维的角度分析使用阿里云数据库RDS的必要性–你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库...

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  7. 数据传输服务 DTS > 数据迁移 > 从自建数据库迁移至阿里云 > 源库为MySQL > 从自建MySQL迁移至RDS MySQL

    从自建MySQL迁移至RDS MySQL 更新时间:2020-08-20 10:49:52 编辑我的收藏 本页目录 前提条件 注意事项 费用说明 迁移类型说明 增量数据迁移支持同步的SQL操作 数据库 ...

  8. 阿里云rds mysql坑_配置ECS上自建MySQL作为RDS从库过程中踩到的坑

    环境: RDS版本:阿里云的5.6 ECS自建MySQL5.6.34(官方版本) 通过将阿里云rds的自动全量备份下载到ECS上,按照官方的步骤解压--> aploy-log ---> m ...

  9. 阿里云重启mysql_阿里云RDS Mysql 5.6 ECS自建从库(不锁表,不重启)

    注意:你的备份的时间应该在你的binlog保存时间范围内 环境: 主库: 阿里云RDS Mysql 5.6 从库: ECS机器上自建从库 Centos 7.4 setp 1 在阿里云RDS后台建立只读 ...

最新文章

  1. 从传统运维到云运维演进历程之软件定义存储(五)上
  2. c++ using 前置声明_C++ 类声明 类前置声明范例
  3. 删除rabbitmq的队列和队列中的数据
  4. 在python中使用关键字define定义函数_python等价于'define func()'或如何在python中注释掉函数调用...
  5. tomcat虚拟盘符映射
  6. php 解决跨域问题
  7. @程序员,敏捷开发防坑指南请查收!
  8. 罗永浩“重新定义” 的 TNT 黄了?
  9. MS SQL修改数据库名称
  10. MATLAB VMD分解 变分模态分解 信号预处理 特征提取 及其改进算法
  11. 苹果系统备份文件服务器地址,iphone备份文件在哪 iphone备份文件位置介绍
  12. Web前端低代码介绍的ppt大纲
  13. idea自动去除导入但未使用的包
  14. java long 区别_java中long和int的区别
  15. 【电子学会】2020年12月图形化一级 -- 海底世界
  16. 跟小博老师一起学JSP ——EL表达式
  17. deepin驱动精灵_深度用户展望Deepin 15.11或Deepin 16版本应该有的新功能
  18. python 梦幻西游_GitHub - BestBurning/mhxy: tensorflow实践:梦幻西游人物弹窗识别
  19. dz邮箱验证怎么设置_Discuz X3.2如何设置邮箱验证的具体方法
  20. Roxy-Wi 远程命令执行漏洞 CVE-2022-31137

热门文章

  1. 一行代码不用写,就可以训练、测试、使用模型,这个 star 量 1.5k 的项目帮你做到...
  2. android版本sdk api对应,Android API Level与sdk版本对照表
  3. 批处理 批量s扫1433_申报资料 | 批量整理图谱(续)
  4. CRK计算机,crk_world
  5. python朴素贝叶斯_Python实现的朴素贝叶斯分类器示例
  6. 使用python数据分析的研究意义_大数据分析语言Python的价值和意义
  7. 机器学习从零开始-常见算法手推pure python
  8. BZOJ3508 开灯 [校内NOIP2018模拟20181027] 密码锁
  9. 测试教程网.unittest教程.2. 基本用法
  10. 谈谈我对Promise的理解