背景:系统中积分下发是异步操作,即系统调用对接方接口下发指定数目积分,接口返回订单号,然后再通过mq回调告知最终下发结果。本系统为了留底,调用对接方接口下发积分前会将下发记录写入流水表,待接口返回订单号后将订单号更新至流水表中。MQ回调时再依据对接方返回的订单号将流水表中的状态更新为下发成功或失败。

问题:服务层加了事务,由于其他的bug导致整个服务层回滚,但是积分下发是接口下发,且是跨系统,所以无法回滚。导致积分多发。

解决方法:由于事务回滚,导致积分下发流水表无记录,所以在MQ回调处理逻辑中,根据订单号查询是否有此订单,如果有,就正常更新,如果没有,就将积分进行回收。但是由于服务层有逻辑处理,经常会遇到服务层事务还未提交,MQ回调就过来了,导致正常情况下,流水表查不到记录。为了解决这个问题,在MQ回调逻辑中查不到流水记录后将线程睡1s,后再次查询流水记录,如果还是没有再进行回收操作。

问题:做了两次查询操作,但是查询结果一模一样,都查不到数据。在本地进行测试,在sleep处打上断点,先让第一次查询不到,在断点处在数据库插入一条流水,然后放开断点,发现查不到该流水记录。

原因:通过mybatis-sql-log插件发现,第二次查询没有打印sql,百度发现,这是由于mybatis一级缓存导致的。mybatis的一级缓存是基于sqlSession的,mybatis在查询前会查询缓存,如果sql一模一样就不会查询db,直接返回缓存中的数据。可以再xml查询中加上flushCache="true"不使用缓存

数据库有记录,但是查询不到记录-mybatis的缓存相关推荐

  1. oracle查询最高一条记录,oracle 查询已有记录,上一条记录,下一条记录

    oracle可以使用 lead.lag  函数来查询已有记录的下一条.上一条记录. 表结构如下: 如要查询Staffno是6-1102的前一条记录 select * from staff where ...

  2. position 属性指定了元素的定位类型,查询车辆事故记录保险出险记录

    p.pos_fixed {position:fixed;top:30px;right:5px; } 维保记录查询这块,现在全国的4S店维修保养记录都是全部联网的,在任何一个角落都可以查询. 我们只要通 ...

  3. mysql查询数据库第一条记录_SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)...

    Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组 ...

  4. mysql select count 5万条数据很慢_mysql亿级数据数据库优化方案测试银行交易流水记录的查询...

    点击上方△蓝字关注我们 带你征服编程和泡妞两座大山 对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适? 比如银行交易流水记录的查询 限盐少许,上实际实验过程,以 ...

  5. MySQL亿级数据数据库优化方案测试-银行交易流水记录的查询

    对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适? 比如银行交易流水记录的查询 限盐少许,上实际实验过程,以下是在实验的过程中做一些操作,以及踩过的一些坑,我觉 ...

  6. mysql数据库查上一条下一条记录,mongodb查询当前记录的上一条和下一条

    前言 本博客是很久之前搭建的.前台模板也是很久之前写的,技术方面难免有些过时.代码书写的也比较乱.博客能保持到现在,还多谢各位同学不断的提意见和建议!前几天有同学提出,看博客比较费劲,能否新增上一篇文 ...

  7. mysql查询m到n条数据库,对查询数据库中第M到N条记录的思考

    呵呵,以前听庄明学长说过查询数据库中第M到N条记录的好多种方法,自己为是那样,但是从来没有实践过,今天学到Sql server 2005 的查询语句了,于是就想来实践实践自己的想法! 首先我要声明一下 ...

  8. 1万条数据大概占多大空间_mysql亿级数据数据库优化方案测试-银行交易流水记录的查询...

    对MySQL的性能和亿级数据的处理方法思考,以及分库分表到底该如何做,在什么场景比较合适? 比如银行交易流水记录的查询 限盐少许,上实际实验过程,以下是在实验的过程中做一些操作,以及踩过的一些坑,我觉 ...

  9. mysql数据库中查询第几条到第几条数据_在 mysql 数据库中,从查询结果的第四条记录开始选取5条记录,下面 sql 语句正确的是( )...

    [单选题]同一种货物,在同一线路上或平行线路上作相对方向的运送,而与对方运程的全部或一部分发生重迭交错的运输被称为( ). [多选题]水闸一般由()三部分组成 [单选题]在一个常规的统计表内,非必需包 ...

最新文章

  1. 关于在phpStudy环境下,windows cmd中 php不是内部命令问题
  2. 学术前沿 | 基于深度学习的视觉三维重建研究总结
  3. linux高可用集群(HA)原理详解
  4. webpack打包的两种方式
  5. android一天一次弹窗,Android自定义Toast,多次弹出时取消上次弹出,最后一次弹出为准...
  6. CentOS7密码忘记解决方法GRUB菜单加密
  7. 反射机制----Method,Field,Constructor
  8. python进程join的用法_python 进程介绍 进程简单使用 join 验证空间隔离
  9. c#日期转换周几_Java时间与日期
  10. 自动设置图片的序号_编写学位论文时如何给表格和图片自动编号
  11. 计算机网络模拟校园,计算机网络课程设计-模拟校园网组网实验
  12. 小技巧 ----- 枚举整数的每一位数字
  13. “else if”是否比“switch()case”更快? [重复]
  14. 御剑扫描后台/Burp爆破--Bugku13.网页被黑
  15. 自己动手写网络爬虫学习笔记
  16. 扫雷(简易版) 10*10
  17. magick 包: 在R中进行高级图片处理
  18. html停止工作,update.exe已停止工作
  19. 历练熟女给老实木讷男孩的恋爱建议(转贴)
  20. 8. SpringBoot基础学习笔记

热门文章

  1. NWERC 2017(English Restaurant-期望)
  2. apache mina 2
  3. 利用百度地图的路书功能实现汽车实时定位
  4. uniapp移动端禁止页面横向拖动滑动
  5. 深度学习在推荐系统中的应用及代码集锦(1)
  6. 利用msf实现windows的上线与提权
  7. FPGA数字信号处理(十五)多速率FIR滤波器
  8. 基于WT588F02KD-24SS语音芯片的万年历产品设计ic方案解析
  9. 什么是安全证书,访问者到底是怎么校验安全证书的,服务端返回安全证书后,客户端再向谁验证呢?
  10. vfw视频捕捉显示黑屏解决办法