LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

SQL Server/MySQL数据库读写分离最全详解(看这篇就够了)

admin
2024年1月23日 12:20 本文热度 467

什么是读写分离

读写分离就是将数据库分为主从库,一个主库(Master)用于写数据,多个从库(Slaver)进行轮询读取数据的过程。

主从库之间通过某种通讯机制进行数据的同步,是一种常见的数据库架构。

 

为什么要读写分离呢?

因为数据库的“写”,比如:10000条数据到oracle可能要3分钟,操作是比较耗时的。

但是数据库的“读”,比如:从oracle读10000条数据可能只要5秒钟,相对应写就没有这么耗时。

所以读写分离解决的是:把数据库的写入与查询,在服务器上分开来,从而可以极大的提升查询效率。

 

什么时候要读写分离?

数据库不一定要读写分离,但是如果程序使用数据库较多时,而更新少,查询多的情况下就可以考虑使用。

这样可以减少数据库压力,提高性能,当然数据库也有其它优化方案,比如:分库分表,或是搜索引擎等都是解决方法。

 

读写分离的原理

读写分离基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。

读写分离是为了将请求流量分散到不同的数据库节点上,将写入数据的请求分发到主数据库,读取数据的请求分发到从数据库,从数据可以有多台,即一主多从。

整体架构如下图:

从上图可看出,有个关键技术就是主从复制,每次写入数据的时候,需要将主服务器数据复制到从服务器中,用来确保数据一致性。

下面我以MySQL的主从复制为例,如下图所示:

主从复制

  1. 从服务器连接上主服务器,启动复制的时候,则会自身创建一个IO线程去像主数据库服务器拉取binlog的更新信息。

  2. 把拉过来的binlog信息写到自己服务器的一个relay log日志文件中。

  3. 从数据库服务器创建一个SQL线程,是为了将relay log的所有日志信息,进行sql回写到自己的数据库中,这样就和主库的数据一模一样了。

  4. 当主数据库有数据更新的时候,比如新插入了一条或者update了一条数据,这时候主库会将这些数据更新到binlog二进制文件中,同时,主库会创建一个binlog dump线程,这个线程将更新了的binlog信息发送到从库的IO线程,需要注意的是,这个过程是异步的,如果等着从库接受完成,是不是特别慢,且影响性能。

 

读写分离总结

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的,无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。

因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力,即可以解决可用性的问题,又解决了数据库性能问题。


-end-


该文章在 2024/1/23 12:20:44 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved