数据库读写分离

Posted stpan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库读写分离相关的知识,希望对你有一定的参考价值。

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

技术分享图片

 

以上是关于数据库读写分离的主要内容,如果未能解决你的问题,请参考以下文章

mysql读写分离实现方式

MySQL 主从复制与读写分离 部署

c#mongo 怎么设置读写分离

想用数据库“读写分离” 请先明白“读写分离”解决什么问题

想用数据库“读写分离” 请先明白“读写分离”解决什么问题

为啥数据库读写分离能提高数据库的性能?