1什么会增加主从延迟?

1 网络不好

2 从库硬件差

3 索引没做好,从库执行慢

4 从库锁等待,多见于myisam

5 主库写频繁,从库单线程执行慢

6 使用row复制,或mix使用行复制

2如何优化,减少延迟时间?

1 如何写频繁,水平拆分,减少单片写数量

2 避免复杂DML操作

3几个因为主从延迟发送异常的场景

1 一个事务内有读和写操作

2 修改后紧接着接口访问

4业务上如何解决主从延迟?

解决这个问题有以下几个思路:

1 流程优化避免写后立即读取

a 业务流程上:写完成后接口返回,客户端再次调用接口获取数据,在这个过程中同步已经完成;

b 代码上:写完成后缓存结果到局部变量,内存或缓存中,下次读取直接走缓存;

2避免主从延迟,保证读写强一致性

a 如果是一主一从,可以使用数据库提供的半同步复制,写完成时会等待从库同步完成后返回;但是强一致性会降低写吞吐量

b mysql5.6以后可以使用semi-sync功能,实现强一致性;

c 线上读写都是使用主库,从库只做线下运营,分析使用;为了缓解数据库读写压力,在数据库上架构缓冲层;

3强制读走主库

4 配置经验延迟时间,延迟时间范围内的查询走主库;

a 中间件实现。很多中间件提供这种配置

b 应用层实现。架构一个缓存层,对数据修改后将key保存在cache总,设置生存时间经验延迟时间。查询时首先查询cache,如果找到key则强制走主库;


另外,通过show slave status 字段‘Second_Behind_Master’可以检测主从延迟时间,在延迟较大时,将读切到读库,如果是使用中间件,可以配置强制读主库的延迟:slaveThreshold;这种方式不能保证读到脏数据,对一致性要求不高时可以使用;

最新文章

  1. css内容样式属性
  2. 全面理解JavaScript中的闭包的含义及用法
  3. 为什么Java中字符串是不可变的
  4. SqlServer中——查找杀死阻塞进程
  5. iOS推送处理
  6. ASP.NET c# Redis 开发
  7. Hadoop第5周练习—MapReduce计算气象温度等例子
  8. IE下点击scrollbar会导致焦点移动到body
  9. 如何使用同一个Action中的不同方法
  10. QQ输入法评价
  11. sencha项目升级
  12. Maven配置 settings.xml 转
  13. 关于坑爹的PopupWindow的“阻塞”争议问题:Android没有真正的“阻塞式”对话框
  14. JAX-RPC 与 JAX-WS 的比较
  15. Git与SVN的区别(面试常问)
  16. Linux:简单的并发服务器实现
  17. fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410
  18. (概率 01背包) Just another Robbery -- LightOJ -- 1079
  19. CentOS安装Nginx 以及日志管理
  20. Javascript权威指南阅读笔记--第3章类型、值和变量(1)

热门文章

  1. Leetcode题解(30)
  2. Life is a Line
  3. IIC接口下的24C02 驱动分析
  4. Python入门学习(一)
  5. HTML学习笔记 CSS背景样式案例 第六节 (原创) 参考使用表
  6. python基础知识——基于python3.6
  7. Android-Async-Http 特性简单分析
  8. C#继承中的override(重写)与new(覆盖)用法
  9. Java面试题技术类
  10. [ASP.NET Core 2.0 前方速报]Core 2.0.3 已经支持引用第三方程序集了