解决关系型数据库性能瓶颈的两种思路

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 快速且可持续的弹性扩容、降低对关系型数据库系统依赖。

最近的“停课不停学”给互联网教育行业这堆火又添了一把柴火。这把火烧的越旺,后台的资源越紧张,尤其是数据库。最近我就频繁接到一些用户有关数据库过载的求援。
解决这个问题,有两种思路:

  • 优化数据库系统的架构,令其能够快速可持续的弹性扩容
  • 降低对关系型数据库系统依赖,最好能够实现即便数据库挂了,业务也不会挂。

快速弹性扩容,这里的关键词是快速,云服务商的数据库服务一般都支持增加只读实例,假如启动一个只读实例要很长时间,我们只能一直开着只读而不敢释放,这样本来的弹性支出就变成了固定支出。假如能够在5分钟之内完成只读节点的拉起提供服务,那么我们就可以根据业务的需求来随时拉起只读实例。我们都知道在线教育行业一般都有非常明显的业务高峰期,通过只在高峰期开启只读就可以节省大笔开支。

假如只能增加只读写入很快就将变成另一个瓶颈,尤其是超大表的更新和写入操作。分库、分表成为下一阶段的必然选择。初期有分库分表的需求的数据库表和功能模块不是很多,采取直接在程序里编码的方式关系不大,随着“大表”越来越多,越来越多的模块都加入了分库、分表的代码。代码的味道就越来越不对了。于是负责维护代码的同学开始备受煎熬,对代码的洁癖催促他们赶紧把这些代码整合起来,但一整合就发现事情又没有那么容易,早知道就选择一些开源框架好了,但这样的框架就没有么?是不能可持续的保证性能扩展呢,毕竟数据库的事情关系重大。

关系型数据库快速持续的弹性扩容,这样的架构其实是现成的:

通过阿里云DRDS整合多个阿里云PolarDB,实现透明的水平拆分,及快速的弹性扩容。

阿里云DRDS 是一个分库分表中间件,也是阿里巴巴去O的功臣,经历过双十一的洗礼,经过这么多年的考验,“坑”早被填的差不多了,DRDS本身采用分布式架构,最大支持1024核4096GB内存。99%的用户都不会触碰到这个性能上限,从而能够实现可持续的性能弹性扩展。

PolarDB 是云原生数据库,采用共享存储架构,因为新增只读节点不需要复制数据,所以能够快速弹性扩容。PolarDB 单节点最大88核710GB内存,最大可扩展到16个节点。节点配置越高,随时弹性扩容节省的就越多。

解决问题的另一个思路是降低对关系型数据库的依赖,例如可以考虑在一些业务中使用NoSQL数据库。NoSQL数据库本身就是从互联网的高并发需求中催生出来的,无论是开源的HBase还是阿里云的表格存储都能够提供PB级的存储和千万级的并发处理能力。

除了NoSQL数据库,还可以考虑用一些消息队列服务来缓冲突然增加的业务压力对业务的冲击,用户的前台操作可以先放到消息队列中,再由后台服务取出慢慢处理。每年的双十一0点刚过的下单高峰就是通过阿里云的消息队列服务进行缓冲处理的。

另外,通过一些限流中间件可以将数据库等一些关键部门保护起来。可以根据业务的优先级将不同等级的服务对数据库的调用进行隔离,系统资源紧张时限制部分非关键业务对数据库的访问。阿里云AHAS高可用服务就是一个这样的限流中间件。

这种降低对关系型数据库依赖的方案还有很多,具体选择什么方案,以及与继续投入关系型数据库如何平衡还要看具体应用场景,改造成本和可预期的业务成长速度相关。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
53 3
|
4月前
|
SQL 监控 关系型数据库
"SQL性能瓶颈大揭秘:一步步教你揪出慢查询元凶,从根源解决数据库拖沓问题,让应用速度飞起来!"
【8月更文挑战第31天】作为一名数据库管理员或开发者,面对复杂系统时,运行缓慢的SQL查询常常令人头疼。本文将指导你如何诊断并解决这些问题。首先,通过性能监控工具识别出问题查询;其次,利用`EXPLAIN`分析其执行计划,了解索引使用情况;接着,优化查询语句,如使用合适索引、减少JOIN操作等;再者,优化数据库设计,采用分区表或调整硬件资源;最后,持续监控性能并调优。通过这些步骤,可有效提升数据库的整体性能。
75 0
|
7月前
|
存储 SQL 缓存
关系型数据库的性能瓶颈
关系型数据库的性能瓶颈
160 4
|
6月前
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
919 0
|
14天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
93 15
|
7天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
14天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
18天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
26天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据