小微企业阿里云最佳实践系列(六):千万、上亿条数据在阿里云 MySQL 云数据库下的性能表现

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 阅读对象本博文主要写给创业团队、技术团队人数 < 5 人、没有专业运维等小微企业作为参考,需要掌握基础的服务器管理、软件开发等经验。博文主要内容本博文主要为大家介绍阿里云的 MySQL 云数据库性能对别,通过 1000 万条数据以及 1 亿条数据在 RDS for MySQL 上面的表现来粗略的了解数据性能,高配版选择的 8 核 16 G 内存的 MySQL 数据库,低配选择的 1 核 1 G 内存的数据库。

阅读对象

本博文主要写给创业团队、技术团队人数 < 5 人、没有专业运维等小微企业作为参考,需要掌握基础的服务器管理、软件开发等经验。

博文主要内容

本博文主要为大家介绍阿里云的 MySQL 云数据库性能对别,通过 1000 万条数据以及 1 亿条数据在 RDS for MySQL 上面的表现来粗略的了解数据性能,高配版选择的 8 核 16 G 内存的 MySQL 数据库,低配选择的 1 核 1 G 内存的数据库。

实践过程

第一步:在控制台购买两种配置的数据

这里我们为了测试,选择按量付费,可以看到两种配置的价格差距在 10~12 倍左右,一般我们个人博客、小型企业网站选择 1 核 1 G 的配置完全够用,这里我们为了测试 MySQL 的性能所以选择了一个 8 核 16 G 的高配,当然,阿里云也提供了更高配置的数据库,大家可以自行选择进行测试。
1.一核一G内存数据库购买信息.
image

2.八核十六G内存数据库购买信息.png
image

第二步:初始化数据库配置、账号、数据库等

在数据库购买成功之后,阿里云会为了我们初始化创建数据库,这里需要耐心等待(博主等待了 5 分钟左右,比自己搭建 MySQL 还是快不少)
3.耐心等待数据库创建完成.png
image

数据库初始化完成之后我们可是开始创建账号了,这里为了测试方便,我们选择使用 root 账号并设置一个高强度的密码(生产环境不建议使用高权限 root 账号,建议使用普通账号)
4.低配的数据库创建高权限账号.pngimage

在阿里云提供的 MySQL 在线管理工具首次使用时,我们需要设置管理工具的白名单,按照弹出的提示点击设置本实例即可
5.设置 DMS 数据管理的白名单.pngimage

登录到 MySQL 数据库实例之后,我们需要按照以下的步骤创建数据库,这里我们以 mysql_test 命名来创建一个测试数据库
6.创建测试数据库.pngiimage

第三步:创建测试表以及快速生成测试数据

完成数据库创建之后,我们需要点击左上角这里选择创建的数据(若下拉框未显示,点击旁边的刷新按钮即可),
这里我们添加一些常用的字段:ID、创建时间、修改时间、姓名、手机号、身份证号、用户名、余额
7.创建用于测试的表.pngimage

创建好表之后,我们接下来生成测试数据,阿里云的 DMS 数据管理工具提供了强大的“自动生成测试数据”功能,这里给我们带来了极大的方便。右键点击表名,在弹出的菜单中选择“自动生成测试数据”,然后我们为每个字段选择对应的生成方式(阿里云提供了强大的生成规则,可以在面板中灵活始终各种规则),生成行数这里最大可以选择到 100 万行,这里我们因为要测试上千万、上亿的数据,选择最大上限 100 万行。
8.快速生成测试数据.pngimage

生成好了数据之后我们可以浏览生成的数据,这里可以看到生成的测试数据几乎和真实数据没有什么区别。
9.查看生成的数据.pngimage

第四步:对 MySQL 进行简单的性能测试

在我们测试之前,我们需要对测试数据进行快速复制,我们可以采用以下的 SQL 进行翻倍复制到 1600 万行数据级别

insert into pre_user(name, mobile, id_no, username, balance) select name, mobile, id_no, username, balance from pre_user;

每执行一次,数据库中的数据都会增加一倍,从 100 万行数据增加到 1600 万行数据我们需要执行 4 次,这里可能执行的时间比较长,我们可以两个数据库(高配和低配)一起执行。数据快速复制完成之后我们查询一下数据行数,显示有 1600 万行数据。
10.执行简单的 SQL 查看性能.pngimage

我们为需要测试的字段增加索引(未增加索引的情况下,100 万行数据查询需要 400 毫秒,可见索引的重要性)
11.为需要测试的字段建立索引.pngimage

索引创建好之后我们再次查询数据,在 1600 万行数据的级别下,查询返回 16 行数据总共耗时 28 毫秒,基本上可以满足使用
12.索引创建成功之后我们再次执行查询语句.pngimage

我们分别在高配和低配的数据库上再次执行同样的查询,我们发现高配的只需要 3 毫秒,低配的也只需要 9 毫秒,这里可以看出同样的查询,第二次比第一次快两倍左右
13.两边性能比较.pngimage

查看一下数据库的存储空间,我们发现数据占用了 1.8 GB,索引也占用了 1.8 GB,说明增加索引会增加数据库使用空间,我们应当按照最小化原则以及结合性能要求方面综合考量哪些字段应该增加索引,哪些字段不应该增加索引,一味的增加索引也会造成数据库的负担。
14.查看存储空间.pngimage

第五步:在 3200 万条数据以及 6400 万条数据下的 MySQL 性能表现

刚才我们简单测试了一下 1600 万条数据,这里我们把数据增加到 3200 万条以及 6400 万条数据再进行这里。由于数据量过大,1 核 1 G 的数据库复制较慢,我们这里直接测试高配的数据库(同样使用之前的快速复制 SQL,执行过程等待时间较长,需要耐心等待)。

增加到 3200 万条数据时,数据占用了 3.18 GB,索引占用了 3.86 GB,数据
15.增加到 3200 万级别时的存储空间.pngimage

我们通过常规的 SQL 按照手机号查询,在 3200 万条数据中查找 32 行数据只用了 3 毫秒,可见阿里云的 MySQL 数据库性能还是非常强悍的
16.在 3200 万级别下的查询性能.pngimage
更多详情:https://dwz.cn/rjMkaghz

为了进一步测试性能,我们这次把数据量增加到 6400 万(同样使用快速复制 SQL),这里复制数据我们花费的时间更大。
复制完成后我们查看存储空间,数据占用了 6.0 GB,索引占用了 8.32 GB
17.查看 6400 万数据的存储量.pngimage

同样使用手机号查询数据,在 6400 万条数据中查找到 64 条数据,总共耗时 4 毫秒,和 3200 万行数据下耗时差距不大
18.在 6400 万级别数据下的查询性能.pngimage

第六步:测试阿里云 MySQL 在 1.2 亿条数据下的性能表现

在这一步我们要进一步复制数据,会发现等待的时间太长,甚至会超时,我们可以在原来的 SQL 下增加一个判断,每次复制 2000 万行数据来达到 1.2 亿条数据

insert into pre_user(name, mobile, id_no, username, balance) select name, mobile, id_no, username, balance from pre_user where id <= 20000000;

复制完成之后,我们发现数据占用了 9.48 GB,索引占用了 14.99 GB,索引存储空间远超过了数据存储空间
19.达到 1 亿级别时的存储空间.pngimage

同样我们使用手机号来查询数据,在 1.2 亿条数据下,查找 100 行数据耗时 5 毫秒,可以看见在这个数据容量下性能相当强悍,当然我们的业务数据达到了 1 亿级别时,我们采用的架构也会更加复杂。
20.精准查询数据的性能.pngimage

测试了一下 like 模糊查询,在 1.2 亿条数据下,使用 like 模糊查询(前包含)耗时 23 毫秒,基本上满足使用
21.使用 like 查询 5 万条数据.pngimage

总结

在测试的过程中,我们发现 1 核 1 G 的数据库承载能力在千万级别,我们的个人网站、小型企业网站使用低配的数据库完全满足日常需求。
8 核 16 内存的数据承载上亿的数据,查询性能也不差,对于中型企业来说,基本上也是够用了,阿里云也给我们提供了其他更加强悍的数据库。
原文地址:https://yq.aliyun.com/articles/708050?spm=a2c4e.11155435.0.0.4ad96d118locIi

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
22天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
26天前
|
SQL 安全 数据管理
在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
【2月更文挑战第33天】在阿里云数据管理DMS(Data Management Service)中,您可以按照以下步骤来创建和管理数据库
28 7
|
27天前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
367 3
|
16天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
16天前
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
|
3天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
16天前
|
缓存 监控 数据库
优化数据库查询性能的八大技巧
在今天的互联网时代,数据库是许多应用程序的核心组件之一。优化数据库查询性能是提升应用程序整体性能的关键。本文介绍了八种有效的技巧,帮助开发人员提高数据库查询性能,从而提升应用程序的响应速度和用户体验。
|
17天前
|
弹性计算 关系型数据库 MySQL
阿里云数据库服务器价格表,数据库创建、连接和使用教程
阿里云数据库使用流程包括购买和管理。选择所需数据库类型如MySQL,完成实名认证后购买,配置CPU、内存和存储。确保数据库地域与ECS相同以允许内网连接。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码连接。同一VPC内的ECS需添加至白名单以进行内网通信。参考官方文档进行详细操作。
76 3
|
18天前
|
消息中间件 NoSQL Kafka
云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
该方案描述了一个大数据ETL流程,其中阿里云Kafka消息根据内容触发函数计算(FC)函数,执行针对MongoDB的增、删、改操作。
|
27天前
|
弹性计算 关系型数据库 MySQL
阿里云MySQL云数据库优惠价格、购买和使用教程分享!
阿里云数据库使用流程包括购买和管理。首先,选购支持MySQL、SQL Server、PostgreSQL等的RDS实例,如选择2核2GB的MySQL,设定地域和可用区。购买后,等待实例创建。接着,创建数据库和账号,设置DB名称、字符集及账号权限。最后,通过DMS登录数据库,填写账号和密码。若ECS在同一地域和VPC内,可内网连接,记得将ECS IP加入白名单。
429 2

推荐镜像

更多