Sleep 方案解决主备延迟
主库更新后,读从库之前先 sleep 一下。
具体的方案就是,类似于执行一条 select sleep(1) 命令。这个方案的假设是,大多数情况下主备延迟在 1 秒之内,做一个 sleep 可以有很大概率拿到最新的数据
。
这个方案给你的第一感觉,很可能是不靠谱儿,应该不会有人用吧?并且,你还可能会说,直接在发起查询时先执行一条 sleep 语句,用户体验很不友好啊。
但,这个思路确实可以在一定程度上解决问题。
为了看起来更靠谱儿,我们可以换一种方式。以卖家发布商品为例,商品发布后,用 Ajax(Asynchronous JavaScript + XML,异步 JavaScript 和 XML)直接把客户端输入的内容作为“新的商品”显示在页面上,而不是真正地去数据库做查询。
这样,卖家就可以通过这个显示,来确认产品已经发布成功了。等到卖家再刷新页面,去查看商品的时候,其实已经过了一段时间,也就达到了 sleep 的目的,进而也就解决了过期读的问题。
也就是说,这个 sleep 方案确实解决了类似场景下的过期读问题。但,从严格意义上来说,这个方案存在的问题就是不精确。这个不精确包含了两层意思:
如果这个查询请求本来 0.5 秒就可以在从库上拿到正确结果,也会等 1 秒;
如果延迟超过 1 秒,还是会出现过期读。
看到这里,你是不是有一种“你是不是在逗我”的感觉,这个改进方案虽然可以解决类似 Ajax 场景下的过期读问题,但还是怎么看都不靠谱儿。别着急,接下来我就和你介绍一些更准确的方案。
总结
- 取巧
Sleep 方案解决主备延迟相关推荐
- 什么原因可能导致主备延迟?
主备延迟最直接的表现是,备库消费中转日志(relay log)的速度,比主库生产 binlog 的速度要慢. 备库所在机器的性能要比主库所在的机器性能差.这种部署现在比较少了.因为主备可能发生切换,备 ...
- 《MySQL——主备切换流程与主备延迟》
目录 主备切换 主备延迟的原因 可靠性优先策略的主备切换流程 可用性优先策略的主备切换流程 主备切换 主备切换分为主动运维与被动操作. 软件升级.主库所在机器按计划下线为主动运维. 主库所在机器掉电为 ...
- Mysql主备延迟的来源
首先,有些部署条件下,备库所在机器的性能要比主库所在的机器性能差. 一般情况下,有人这么部署时的想法是,反正备库没有请求,所以可以用差一点儿的机器.或者,他们会把 20 个主库放在 4 台机器上,而把 ...
- 京东一面:MySQL 主备延迟有哪些坑?主备切换策略
大家好,我是Tom哥 作为一名开发同学,大家对 MySQL 一定不陌生,像常见的 事务特性.隔离级别 .索引等也都是老生常谈. 今天,我们就来聊个深度话题,关于 MySQL 的 高可用 一.什么是高可 ...
- Mysql主备延迟的原因
1.备库所在的机器性能比主库所在的机器相差很多 解决办法:换机器 2.备库压力大 解决办法:一主多从 3.大事务,新增的的binlog文件过大,在备库中执行时间过长 解决办法:避免大事务,一次性删除大 ...
- mysql主备方案_Mysql 主备双库方案
一.简介 1.我们为什么要用主从复制? 主从复制目的:可以做数据库的实时备份,保证数据的完整性: 可做读写分离,主服务器只管写,从服务器只管读,这样可以提升整体性能. 原理图 1.png 从上图可以看 ...
- mysql 主备及时_MySQL高可用(二)主备延时如何解决?
从上篇文章我们知道主备同步是依赖于 binlog,主库负责生产 binlog,备库负责消费 binlog,从而实现主备同步. 今天我们来学习一下主备同步里的一个重点的问题:主备延时. 主备延时,简单来 ...
- 《MySQL实战45讲》实践篇 24-29 学习笔记 (主备篇)
图片来自于极客时间,如有版权问题,请联系我删除. 24 | MySQL是怎么保证主备一致的? 主备切换流程如下: 建议把节点 B(也就是备库)设置成只读(readonly)模式. 1.有时候一些运营类 ...
- 美团面试官:MySQL主备、主从、读写分离你知道多少?
一.MySQL主备的基本原理 在状态1中,客户端的读写都直接访问节点A,而节点B是A的备库,只是将A的更新都同步过来,到本地执行.这样可以保持节点B和A的数据是相同的.当需要切换的时候,就切成状态2. ...
最新文章
- 自然语言处理领域重要研究及资源全索引!
- Java执行字符串中的运算公式
- 网站关键词密度对SEO优化的重要性
- MICRA OPENCART 自适应主题模板 ABC-0678-02
- PHP下kafka的实践(已经测试)
- 【数据结构与算法】之深入解析“分割回文串II”的求解思路与算法示例
- Ticker View
- HBase phoenix二级索引
- java exec 关闭_如何正确关闭java ExecutorService
- SpringCloud面试题分享
- JAVA里面==和euqals的区别
- MySQL 到底能不能放到 Docker 里跑? 1
- 基于大数据技术推荐系统算法案例实战教程
- 向weka 中添加DBSCAN算法
- 支付宝即时到账在线语音音效生成器html源码
- 不用linux转录组数据分析,玩转RNA-seq数据也可以不需要linux ?
- butter滤波器是iir吗_学习随笔之IIR滤波器与FIR滤波器
- 面试:第十二章:所有总结
- linux下播放蓝光iso,如何播放蓝光原盘ISO文件?
- 自考本计算机软件基础ppt,计算机软件基础自考本科
热门文章
- 人生的四大天规,越早明白,越有福气
- 最积阴德的4件事,哪怕做过一件,也会累积大功德!
- Android Studio如何允许访问网络资源
- linux 7升级win10双系统,安装 Windows 10 + Centos 7 双系统共存
- int 转换成 string 四种方法你们喜欢用那种呢?
- oracle如何设置权限,Oracle创建用户并设置权限
- html5中加入视频格式,HTML5音视频格式video和audio
- macos复制粘贴快捷键 快速_探究Mac OS十大键盘快捷键
- 意见反馈接口php,用PHP制作的意见反馈表源码
- 模型房推荐_艺术生意大利留学,关于费用开销和专业推荐,这些详情要看