我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

1.增加缓存

在web层和db层之间添加一层缓存。减轻数据库读取负担,提高数据读取速度。

2、业务分拆

分数据库:以电商平台为例,包括用户、产品、评论、订单等几个模块,最简单的就是在一个数据库中创建四张表。

随着业务规模的扩大,需要进行业务拆分。每个表存储在单独的数据库中,将原来对一个数据库的依赖拆分为四个数据库同时承受压力,提高系统吞吐量。

在这里插入图片描述

3.Mysql主从复制,读写分离

当数据库的写压力增大时,缓存只能缓解数据库的读压力。利用主从复制技术实现读写分离,提高读写性能和读库扩展性。

读写分离是指只在主服务器上写,在从服务器上读:主数据库处理事务查询,从数据库处理查询。

3.1 主从复制概念

数据可以从MySQL数据库服务器主节点复制到一个或多个从节点。 MySQL默认使用异步复制,这样从节点就不必一直访问主服务器来更新自己的数据。可以在远程连接上执行数据更新。从节点可以复制主数据库中的所有数据库或特定数据库,或特定表。 。

3.2 主从复制的目的

读写分离

在开发工作中,有时某个SQL语句需要锁表,导致读服务暂时不可用,从而影响现有业务。使用主从复制,让主库负责写,从库负责读,这样,即使主库锁表,通过从库读也能保证业务的正常运行。

数据实时备份,当系统中某个节点出现故障时,可以方便进行故障转移。

架构扩展

随着系统中业务访问量的增加,如果数据库部署在单机上,I/O访问的频率就会过高。通过主从复制,增加多个数据存储节点,将负载分散到多个从节点上,降低单机磁盘I/O访问频率,提高单机I/O性能。

3.3 Mysql主从模式

一主一奴

一主多奴

在这里插入图片描述

一主一从和一主多从是最常见的主从架构。它们实施起来简单且有效。它们不仅可以实现HA,还可以实现读写分离,从而提高集群的并发能力。

多主一从

多主一从可以将多个mysql数据库备份到一台存储性能更好的服务器上。

双主复制

双主复制,即相互主从复制,每台服务器既是另一台服务器的从机。这样,任何一方所做的更改都将通过复制应用到另一方的数据库中。

级联复制

在这里插入图片描述

级联复制模式下,部分slave的数据同步不是连接到节点,而是连接到slave节点。因为如果主节点有过多的从节点,就会损失部分性能。那么我们可以有3到5个从节点连接到主节点,其他从节点作为二级或三级节点连接到这些从节点。这样不仅可以缓解主节点的压力而且对数据一致性没有负面影响。

3.4 Mysql主从复制原理

MySQL主从复制涉及三个线程,一个运行在主节点(日志转储),另外两个线程(I/O、SQL)运行在从节点

上图中的主从复制分为五个步骤:

3.5 mysql主从复制模式

MySQL主从复制默认是异步的。 MySQL所有的增删改查都会记录在日志中。当从节点连接时,会主动从源获取最新的bin日志文件。并中继bin日志中的sql。

4、分表、分库

在cache层缓存、MySQL的主从复制、读写分离的基础上,MySQL主库的写入压力开始出现瓶颈,数据量持续激增。由于表锁的使用,在高并发下,出现了严重的锁问题,大量高并发的MySQL应用开始转而使用引擎。采用-Slave复制模式的MySQL架构只能扩展数据库的读取,而数据的写入仍然集中在其上。这时需要进一步扩展数据库的吞吐能力,以满足高并发访问和海量数据存储的需求。

对于访问极其频繁、数据量巨大的单表,首先要做的就是减少单表的记录数,从而减少数据查询所需的时间,提高吞吐量。数据库。这就是所谓的表分区。在分表之前,首先需要选择合适的分表策略,使数据能够均匀分布在多个表中,而不影响正常查询。

分表可以解决单表数据量过大导致的查询效率降低的问题,但无法带来数据库并发处理能力的质的提升。面对高并发的读写访问,当数据库服务器无法承受写操作的压力时,无论如何扩展Slave服务器都是没有意义的。应该对数据库进行拆分,提高数据库的写入能力,即分库。

数据库进行了业务拆分、分库分表,但查询性能和并发处理能力有所提升。但将原来的跨表事务升级为分布式事务;由于记录分为不同库、不同表,很难进行多表关联查询,不指定路由字段就无法查询数据。而且分库分表后进一步扩展系统(改变路由策略)会很不方便,需要重新进行数据迁移。

分表策略:

分库策略:

数据库分表可以解决单表数据量较大时的数据查询效率问题,但无法提高数据库并发操作的效率,因为分表的本质仍然是对数据库的操作,很容易受到影响受数据库 IO 性能限制。

那么,如何均匀分配数据库IO性能问题呢?显然,将数据划分到数据库可以有效解决单个数据库的性能问题。

分库策略和分表策略的实现非常相似。最简单的可以通过模路由。

分库分表策略:

上述配置中,分库分表可以解决单表海量数据的查询性能问题,分库可以解决单库的并发访问压力问题。

有时,我们需要同时考虑这两个问题。因此,我们不仅需要对单表进行表分区操作,还需要进行数据库分区操作,以同时扩展系统的并发处理能力,提高单表的查询性能。这就是我们使用的分库分表。

分库分表的策略比前两者更为复杂。常见的路由策略如下:

1、中间变量=%(库数*每个库表数);

2、库序号=四舍五入(中间变量/各库表数);

3、表序号=中间变量%各库表数;

二维码
扫一扫在手机端查看

本文链接:https://by928.com/7672.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线