MysqL应对高并发:读写分离

前言

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

使用读写分离

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值