码迷,mamicode.com
首页 > 数据库 > 详细

数据库读写分离

时间:2018-08-30 02:05:20      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:二进制   mysq   bubuko   维护   工作   完成   lock   操作   混合   

  • 缘由:对数据库有频繁操作,而写数据本身比读数据更耗时,则可以设计主从数据库复制的方式同步数据,主数据库用来更新数据,从数据库用来查询数据库。
  • 以MySql为例,可以基于sql语句复制在从库上执行,或基于行数据的复制,一般会采用两种混合:先默认使用sql复制执行,如果无法精确执行,则使用行数据复制。
  • 复制过程:主库在事务完成之前,会记录更新日志(二进制);然后从库启动一个I/O工作线程来读取更新日志(如没有更新,则进入睡眠状态等待),写入中继日志,最后从库中的sql线程读取中继日志,回放在主库中更新的操作,以达到与主库数据保持一致。
  • 这种方式既做到数据备份,也做到数据库连接分流,也优化系统性能。
  • 实现方式:从代码层实现读写分离,本身编码及维护工作量大,一般考虑使用代理实现(mysql_proxy,Atlas-360,Amoeba-阿里巴巴);
  • Spring可通过切面的方式实现读写分离(速度快,支持事物,但不好管理);中间件如Altas也支持事物,也管理方便,只是对性能稍有损耗。

技术分享图片

 

数据库读写分离

标签:二进制   mysq   bubuko   维护   工作   完成   lock   操作   混合   

原文地址:https://www.cnblogs.com/stpan/p/9557743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!