MySQL数据库:读写分离

MySQL数据库:读写分离

一、读写分离的原理:

1、实现原理:

MySQL数据库:读写分离

读写分离解决的是,数据库的写操作,影响了查询的效率,适用于读远大于写的场景读写分离的实现基础是主从复制,主数据库利用主从复制将自身数据的改变同步到从数据库集群中,然后主数据库负责处理写操作(当然也可以执行读操作),从数据库负责处理读操作,不能执行写操作。并可以根据压力情况,部署多个从数据库提高读操作的速度,减少主数据库的压力,提高系统总体的性能。

2、读写分离提高性能的原因:

(1)增加物理服务器,负荷分摊;

假如我们有1主3从,假设现在1分钟内有10条写入,150条读取。那么,1主3从相当于共计40条写入,而读取总数没变,因此平均下来每台服务器承担了10条写入和50条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被分摊后,又间接提高了写入的性能。所以,总体性能提高了,也就是拿机器和带宽换性能。

(2)主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;

(3)从库可配置MyISAM引擎,提升查询性能以及节约系统开销;

(4)主从复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最快的速度恢复服务。

3、Mysql读写分写的实现方式:

(1)基于程序代码内部实现:

在代码中根据select 、insert进行路由分类,这类方法也是目前生产环境下应用最广泛的。优点是性能较好,因为程序在代码中实现,不需要增加额外的硬件开支,缺点是需要开发人员来实现,运维人员无从下手。

(2)基于中间代理层实现:

代理一般介于应用服务器和数据库服务器之间,代理数据库服务器接收到应用服务器的请求后根据判断后转发到后端数据库,有以下代表性的代理层。

①mysql_proxy。mysql_proxy是Mysql的一个开源项目,通过其自带的lua脚本进行sql判断。

②Atlas。是由 奇虎360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。支持事务以及存储过程。

③Amoeba。由阿里巴巴集团在职员工陈思儒使用序java语言进行开发,阿里巴巴集团将其用户生产环境下,但是他并不支持事物以及存储过程。

经过上述简单的比较,不是所有的应用都能够在基于程序代码中实现读写分离,像一些大型的java应用,如果在程序代码中实现读写分离对代码的改动就较大,所以,像这种应用一般会考虑使用代理层来实现。

 

二、读写分离的搭建:

有关读写分离的搭建步骤,可以阅读这两篇博客:

https://blog.csdn.net/starlh35/article/details/78735510

https://blog.csdn.net/justdb/article/details/17331569

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100074.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Vim编辑器的安装与使用[通俗易懂]

    Vim编辑器的安装与使用[通俗易懂]1、导读下面给大家讲解一下Linux/ununtu系统下的文本编辑神器——vim编辑器的安装及基本使用方法。2、安装vim编辑器如果没有安装vim编辑器的,可在终端下输入一下命令进行安装:sudoapt-getinstallvim安装过程中提示:[y/n]?时,回复“y”即可!3、简单理解vim编辑器的工作模式vim编辑器可以简单分为“命令…

    2022年10月28日
  • B/S架构及其运行原理

    目录一.B/S的概念二.B/S工作原理三.B/S的优点:四.B/S体系结构的特点:五.与传统C/S的联系与区别:一.B/S的概念B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分…

  • SQL的多表查询

    SQL的多表查询

  • 常见算法:C语言求最小公倍数和最大公约数三种算法

    常见算法:C语言求最小公倍数和最大公约数三种算法

    2021年12月15日
  • ubuntu编译安卓源码_安卓源码编译环境

    ubuntu编译安卓源码_安卓源码编译环境———————————————环境变量设置———————————————1.设置jdk环境变量不要把环境变量配置在/etc/environment和/etc/profile文件中,这样配置的在有的ubuntu版本上会出现退出当前终端后不起作用的问题,在ubuntu12

  • EMD算法的简单介绍,matlab安装包的安装以及其应用![通俗易懂]

    EMD算法的简单介绍,matlab安装包的安装以及其应用![通俗易懂]EMD算法的简单介绍:从编程的角度来看,EMD是两个while循环。固有模特分量(内层while循环)满足的两个条件:(1)极值点的个数和过零点的个数相等或者最多相差为1个;(2)上下包络线的平均值为零。余项的满足条件:单调函数(部分论文上有其他的条件,外层while循环)。具体的步骤如下:1)首先使用三次样条曲线分别拟合信号…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号