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

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 计算机ATA考试详细讲解

    计算机ATA考试详细讲解国计算机信息高新技术考试(CITT)是原劳动部根据中央有关稳妥发展劳动力市场、积极进行职业技能鉴定工作的有关精神,为了适应社会发展和科技进步的需要,提高劳动力素质和促进就业,加强计算机信息技术领域新职业、新工种职业技能的培训考核工作,于1996年,以”劳部发[1996]19号”文件《关于开展计算机信息高新技术培训考核工作的通知》,由劳动和社会保障部职业技能鉴定中心,在全国范围内统一组织实施的社会化职业技能考试。整个考试由劳动保障部职业技能鉴定中心负责题库管理、各省(自治区、直辖市)负责考试的组织、考试站负责

    2022年7月13日
    20
  • 如何搭建www服务器_网站服务器

    如何搭建www服务器_网站服务器更多内容参见个人技术博客,无广告欢迎关注搭建自己的服务器,过程大致分为3步:*购买服务器,配置系统环境*获得域名* CA认证1、购买服务器,配置系统环境经过比较,阿里云、腾讯

    2022年8月4日
    5
  • vim学习六之搜索命令「建议收藏」

    vim学习六之搜索命令「建议收藏」目录Vim基本搜索命令/或者?搜索n/N正反向下一个特殊搜索Vim高亮搜索搜索大小写敏感搜索进阶Vim正则表达式搜索查找在行首的特定串查找在行尾的特定串匹配特定行Vim基本搜索命令/或者?搜索在Vim普通模式下,输入/或?符号就进入了搜索模式,/用于正向往下搜索,?用于反向往上搜索。n/N正反向下一个在搜索模式下可以对Vim打开的整个文本内容进行搜索,当按下n时可以继续正向查找下一个相匹配的目前单词。N的作用与n相反,是往上反向搜索目标单词。特殊搜索在Vim命

    2022年9月23日
    0
  • 手游市场数据分析_梦幻西游手游考古3进4

    手游市场数据分析_梦幻西游手游考古3进4“机”不离手是大多数人的生活状态,甚至有一个用手机形容真爱的段子:“在一起时不看手机,不在一起时秒回信息,就算现代人的真爱了。”随着手机在日常生活中地位的提升,手机游戏也逐渐成为年轻人日常生活不可或缺的一部分。 在7月31日的网易云创大会游戏论坛上,来自TalkingData华南区业务负责人黎丽华给大家带来了“透过数据看真相:手游市场趋势报告”的主题分享。通过一些鲜活的数据向大家展示了…

    2022年10月30日
    0
  • ES6数组的高阶方法,箭头函数,对象[通俗易懂]

    ES6数组的高阶方法,箭头函数,对象[通俗易懂]一.数组的高阶方法forEach(遍历)vararr=[‘我’,’和’,’我的’,’祖国’];arr.forEach(function(item,index,self){ console.log(item,index,self);})map(映射)vararr=[12,34,56];vararr2=arr.map(function(item,index,self){ console.log(item,index,self); returnitem*2;})

    2022年6月12日
    35
  • SGD随机梯度下降_随机梯度法

    SGD随机梯度下降_随机梯度法BGDvsSGDBGDvsSGD名词解释功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入BGDvsSGD…

    2022年9月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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