强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

【前言】

当数据达到一定量的时候,数据库会成为整个系统的瓶颈,一般采取的优化策略为读写分离,数据库通过分主库从库从而实现读写分离(写请求操作主库,读请求操作从库);

【解决数据延迟思路】

         一、主从同步原理(在此以目前最普及的MySQL为例)

以下是一张经典的MySQL通过binlog实现主从数据同步的原理图:

         二、问题是如何产生?

1、从上面原理图中不难发现,主从同步是有一定的延迟,影响延迟大小因素:

(1)延迟的大小取决于从上次同步到现在产生数据量

(2)当前服务器间网络情况

(3)主从服务器本身压力(CPU,内存,IO等)

2、由于数据库服务一般都是在内网当中,而且服务器在购置时都会高一些配置(比实际需要)所以基本上同步都很快,一般为毫秒级;

3、一般的业务场景中毫秒级延迟是可以忽略;

4、有一般就有特殊,有一些特殊情况需要实时毫秒级的时间差也不允许;以下是针对这些特殊情况给出常见的解决方案。

         三、数据延迟解决方案:

1、方案一:写程序双写(写主库同时写读库)

2、方案二:读程序查主库

3、方案三:写程序写主库且写缓存(设置一定的失效时间,一般略大于数据库同步最大时延即可),读程序读缓存读从库

         四、三种方案优缺点:

1、方案一:双写会消耗一定的性能,实现起来比较简单,高并发写的场景不适用;

2、方案二:读程序会影响主库的性能,实现起来比较简单,高并发读的场景不适用;

3、方案三:大部分情况下读写均多消耗写性能,实现较为复杂,高并发读写都适用(缓存读写非常快);

【总结】

1、实现固然重要,但更为重要的是思路;

2、很多底层的原理与思想是通用的。

数据库主从延迟导致查询不准确的解决思路相关推荐

  1. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  2. 针对MySQL数据库主从延迟的问题

    因从库是单进程,采用队列形式应用主库推送过来的binlog日志,当主库写压力较大时,从库就会跟不上,从而产生延迟. 调整业务: 1.一些公司的数据库设计,把各种业务的库都放到一个数据库实例里,比如一条 ...

  3. 如何在生产环境mysql删除亿万级数据解并且不影响数据库主从延迟的解决方案

    目录 前言 为什么在生产上主从环境情况下mySQL特别容易卡死 不要去怪设计不要去怪开发我们devops靠自己 场景一.当要被删除的数据量远大于保留的数据量的场景下的做法 操作涉及数据量及环境 烂机器 ...

  4. win7与internet时间同步出错_win7系统无法同步Internet时间导致时间不准确的解决方法...

    在Win7系统中为了获得更好的时间准确定会同步系统时间.但是在同步Internet时间的过程中会遇到一些错误问题,比如一些朋友发现自己的win7旗舰版系统电脑能正常上网,而时间却无法同步(同步时出错) ...

  5. oracle数据库内存不足导致查询变慢,经验:探索内存问题如何造成数据库性能严重异常...

    导读:在使用数据库的过程中,内存不足常常会引起数据库异常.但是内存不足,又会为数据库带来哪些具体的影响呢?本次,我们将通过某客户现场数据库在某个时段内性能严重下降的案例来展示由于主机内存不足而造成数据 ...

  6. redis面试:由于主从延迟导致读取到过期数据怎么处理

    读写分离,当使用从节点响应读请求时,业务端可能会遇到如下问题: 复制数据延迟 读到过期数据 从节点故障 复制数据延迟 因为主从库间的命令复制是异步进行的,所以有可能客户端从从客户读取到的主和主库中最新 ...

  7. mysql 临时文件写满_阿里云数据库MySQL临时文件导致实例空间满的解决办法

    MySQL实例可能会由于查询语句的排序.分组.关联表产生的临时表文件,或者大事务未提交前产生的binlog cache文件,导致实例空间满,为避免数据丢失,RDS会对实例进行自动锁定,磁盘锁定之后,将 ...

  8. STM32写FLASH期间导致中断无法响应的解决思路

    思路一:将中断程序或者整个程序放到RAM执行 详情参考:解决STM32F0/F1内部FLASH写操作导致中断程序无法响应的问题 思路二:让我们回顾下初衷,我们要往FLASH保存数据? 显而易见,往FL ...

  9. oracle 39083错误,Oracle数据库导入导出时,ORA-39083;ORA-00439错误解决思路

    ORA-39083: Object type TABLE:"TEST"."TEST_SS_NAME" failed to create with error: ...

最新文章

  1. android jar 电子书下载,【Android】Gradle project sync jar包长时间下载不下来的解决办法...
  2. CS中常用转义符与@符号的作用
  3. LOJ#2542 随机游走
  4. PostgreSQL学习手册(二) 模式(Schema)
  5. 【原创】大公司为什么还在采用过时的技术
  6. python文件输出log_Python同时向控制台和文件输出日志logging的方法
  7. Linux开机启动过程(12):start_kernel()->还是setup_arch
  8. 电芯容量在前期循环中容量增加_了解移动电源聚合物电芯,这篇文章就够了
  9. 计算机毕业设计源码分享双鱼林,计算机毕业课程设计论文源码-057双鱼林asp教务选课信息系统...
  10. 搜索引擎中影响索引长度的因素
  11. 在vs编辑器里走来走去的快捷键
  12. 关于字符 字节 python3
  13. Unix系统结构由三个层次组成,一部分是内核
  14. EM算法原理The EM Algorithm
  15. 0805,0603,1206这些封装的名字是什么来的
  16. 关于Egret项目升级引擎出现的问题
  17. 【计算机硬件系统设计(华科)——存储器设计(Logisim 实现)】
  18. 外包公司:这位高颜值女程序媛请留步!
  19. Go语言核心之美 2.6-常量
  20. OfficeOnline和OpenOffice对比

热门文章

  1. 中国电信:5G 手机可实现不换卡号;新西兰否认禁用华为;Visual Studio 2019 正式发布!| 极客头条...
  2. 美团百度联合布局无人驾驶外卖;高通裁员千人;英特尔关闭可穿戴业务 | CSDN极客头条...
  3. 携程否认竞价排名;戴尔为“吃鸡外挂”致歉;腾讯将发区块链游戏 | CSDN极客头条
  4. 死磕shell系列-shell介绍
  5. android onscrolllistener判断到底部,android中RecycleView添加下滑到底部的监听示例
  6. tableau 实战练习数据源分享_数据分析实战训练营学习笔记
  7. j - cyk追楠神系列一_「清单」小米烧水杯太萌了,喜茶桂花冻太香了,优衣库新系列太美了!...
  8. 两条信号之间加电容_信号完整性SI读书笔记之一
  9. php 打包下载网络图片,php多张图片打包下载
  10. 双侧检验的p值和单侧检验_假设检验03----假设检验的步骤