欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MysqL应对高并发:读写分离

程序员文章站 2022-05-17 08:53:07
前言和用户无关的数据,比如页面配置,商品信息等,每个人请求的数据都相同,缓存的命中率非常高,几乎没有多少请求会穿透到Mysql。和用户相关的数据,使用缓存的效果就没那么好了,每个人的数据都不同,缓存的命中率不高,还是有想到一部分查询命中不了缓存,打到MySql上。随着用户量越来越多,打到Mysql上的读写请求也越来越多,当单台Mysql承受不了这么多并发时,应该怎么办。使用读写分离当单台Mysql无法满足要求时,只能用多个实例来承担大量的读写请求。简单有效的方案是,我们不对数据分片,而是使...

前言

  • 和用户无关的数据,比如页面配置,商品信息等,每个人请求的数据都相同,缓存的命中率非常高,几乎没有多少请求会穿透到Mysql。
  • 和用户相关的数据,使用缓存的效果就没那么好了,每个人的数据都不同,缓存的命中率不高,还是有想到一部分查询命中不了缓存,打到MySql上。
  • 随着用户量越来越多,打到Mysql上的读写请求也越来越多,当单台Mysql承受不了这么多并发时,应该怎么办。

使用读写分离

  • 当单台Mysql无法满足要求时,只能用多个实例来承担大量的读写请求。
  • 简单有效的方案是,我们不对数据分片,而是使用多个具有相同数据的Mysql实例分担大量的查询请求,之所以能解决问题,实际上时基于读写比大概在几十比一这个客观情况。
  • 读写分离另外的好处时,实施起来简单,只需要把数据库的读写请求分开到不同Mysql实例就可以了。
  • 需要做到:
    • 部署一主多从多个 MySQL 实例,并让它们之间保持数据实时同步。
    • 分离应用程序对数据库的读写请求,分别发送给从库和主库。
  • 读写分离的一个副作用是,可能会存在数据不一致的情况。原因是,数据库中的数据在主库完成更新后,是异步同步到每个从库上的,这个过程有一个微小的时间差,这个时间差叫主从同步延迟。
  • 同一个事务中的查询操作也会被路由到主库,这样来规避主从不一致的问题
  • 对于这种主从延迟带来的数据不一致的问题,没有什么简单方便而且通用的技术方案可以解决,我们需要重新设计业务逻辑,尽量规避更新数据后立即去从库查询刚刚更新的数据

本文地址:https://blog.csdn.net/weixin_40108561/article/details/107310888