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
上一篇: dba_indexes视图的性能分析