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

本文涉及的产品
云原生数据库 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
2月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
62 3
|
5月前
|
SQL 监控 关系型数据库
"SQL性能瓶颈大揭秘:一步步教你揪出慢查询元凶,从根源解决数据库拖沓问题,让应用速度飞起来!"
【8月更文挑战第31天】作为一名数据库管理员或开发者,面对复杂系统时,运行缓慢的SQL查询常常令人头疼。本文将指导你如何诊断并解决这些问题。首先,通过性能监控工具识别出问题查询;其次,利用`EXPLAIN`分析其执行计划,了解索引使用情况;接着,优化查询语句,如使用合适索引、减少JOIN操作等;再者,优化数据库设计,采用分区表或调整硬件资源;最后,持续监控性能并调优。通过这些步骤,可有效提升数据库的整体性能。
83 0
|
8月前
|
存储 SQL 缓存
关系型数据库的性能瓶颈
关系型数据库的性能瓶颈
175 4
|
7月前
|
SQL 监控 关系型数据库
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
MySQL慢查询日志配置指南:发现性能瓶颈,提升数据库效率
966 0
|
13天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
13天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3
|
13天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
54 2
|
26天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
182 15
|
20天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。