1.事情起始: 我们每个月要给商家进行出账,所以有定时任务去跑商家的订单和售后进行出账,这个功能已经上线很久了,代码执行多次都没问题,突然有一天,产品找我说出现bug了:

这时,去生产库查询重复的订单,发现大部分商家都出现了问题,有些商家的订单没问题,接下来就拷贝生产数据到开发环境,用生产分支的代码重新执行,发现没问题,但偏偏生产有问题,后面给订单号加上唯一索引

在生产重新跑了一遍,结果日志显示,报错原因都是重复的订单号,因为前面加了唯一索引约束了。这里至少证明不是代码bug引起的了:突然想起,公司最近加了数据库主从,原因就大概是主从延迟导致的,账单的业务大概如下:

while(true){

1. select * from order where bolsettement="n";//查询待结算的订单

2.处理订单信息,生成订单明细

3.更新订单状态为已结算 update order set bolsettement="y" where cod_order_id in(.....); //批量处理

}

由于主从默认主库执行写操作,从库执行读操作,假如上面更新订单状态要2s,那么主库执行完毕,立刻返回执行结果,此时从库同步主库需要2s,但我们的代码执行回到第1步,此时立刻查询从库,那么数据就不一致了,导致严重的问题

解决方案: 对于某些查询sql,也强制从主库去查询,由于我们用的是阿里云的数据库,所以他们的方案如下:

最新文章

  1. get方式和set方式提交时乱码
  2. RecyclerView解密篇(一)
  3. win7 x64 vs2010 directShow开发环境配置
  4. HTTP压缩
  5. UVA 10791 - Minimum Sum LCM(坑)
  6. 数据库中User和Schema的关系
  7. JAVA final关键字,常量的定义
  8. Win7系统下VS2008安装SP1补丁解决JQuery无智能提示的问题
  9. Usage of readonly and const
  10. mysql海量数据的优化
  11. 2018-2019-1 20189210 《LInux内核原理与分析》第六周作业
  12. python 几分钟前,几小时前,几天前转为时间戳
  13. [sharepoint]修改Item或者File的Author和Editor
  14. 可遇不可求的Question之flash的socket连接安全策略文件篇
  15. QT开发基础教程
  16. 使用formData上传文件,ajax上传
  17. [图解算法] 二分查找Binary-Search——<递归与分治策略>
  18. 关于js操作符需要注意的地方
  19. Virtualbox安装Ubuntu
  20. 第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点

热门文章

  1. JS继承 小白文
  2. CF1203D2 Remove the Substring (hard version) 题解
  3. python_选择排序
  4. Spark Java创建DataFrame
  5. B - The Staircases (dp)
  6. Easy Problem(等差数列求和导公式)
  7. <init>与<clinit>,static与final与static final
  8. WPF实现手势解锁
  9. 柱状图bar
  10. WebApi OAuth2身份认证