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

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 本博文主要为大家介绍阿里云的 MySQL 云数据库性能对别,通过 1000 万条数据以及 1 亿条数据在 RDS for MySQL 上面的表现来粗略的了解数据性能,高配版选择的 8 核 16 G 内存的 MySQL 数据库,低配选择的 1 核 1 G 内存的数据库。

关联博文
小微企业阿里云最佳实践系列(一):ECS 服务器与 RDS 数据库
小微企业阿里云最佳实践系列(二):RDS 数据库与DMS 数据库管理(数据管理)
小微企业阿里云最佳实践系列(三):OSS 图片存储(对象存储)与 CDN 内容分发
小微企业阿里云最佳实践系列(四):云监控与 SLS 日志服务
小微企业阿里云最佳实践系列(五):零成本使用 DMS 数据库实验室学习研究
小微企业阿里云最佳实践系列(六):千万、上亿条数据在阿里云 MySQL 云数据库下的性能表现
小微企业阿里云最佳实践系列(专辑)

概述

阅读对象

本博文主要写给创业团队、技术团队人数 < 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内存数据库购买信息.pngimage
2.八核十六G内存数据库购买信息.pngimage

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

在数据库购买成功之后,阿里云会为了我们初始化创建数据库,这里需要耐心等待(博主等待了 5 分钟左右,比自己搭建 MySQL 还是快不少)
3.耐心等待数据库创建完成.pngimage
数据库初始化完成之后我们可是开始创建账号了,这里为了测试方便,我们选择使用 root 账号并设置一个高强度的密码(生产环境不建议使用高权限 root 账号,建议使用普通账号)
4.低配的数据库创建高权限账号.pngimage
在阿里云提供的 MySQL 在线管理工具首次使用时,我们需要设置管理工具的白名单,按照弹出的提示点击设置本实例即可
5.设置 DMS 数据管理的白名单.pngimage
登录到 MySQL 数据库实例之后,我们需要按照以下的步骤创建数据库,这里我们以 mysql_test 命名来创建一个测试数据库
6.创建测试数据库.pngimage

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

完成数据库创建之后,我们需要点击左上角这里选择创建的数据(若下拉框未显示,点击旁边的刷新按钮即可),
这里我们添加一些常用的字段: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

为了进一步测试性能,我们这次把数据量增加到 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 内存的数据承载上亿的数据,查询性能也不差,对于中型企业来说,基本上也是够用了,阿里云也给我们提供了其他更加强悍的数据库。

版权

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

原创作者 10086@xiaoi.me 发表于阿里云·云栖社区:https://yq.aliyun.com/users/y4epujtm5wye6

扫码关注我,在线与我沟通、咨询
image

转载请保留原文链接以及版权信息

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
81 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2
|
20天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
80 4
|
3天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
27 0
|
16天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
124 6
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
69 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用

热门文章

最新文章

推荐镜像

更多