0
点赞
收藏
分享

微信扫一扫

Mybatis同一个事务中查询相同的数据导致数据后者数据有问题

司马吹风 2022-01-26 阅读 95

Mybatis同一个事务中查询相同的SQL导致后者数据有问题

问题描述

  • 在开发时,因为有较长的代码用到了事务,在将近事务结束时查询到的数据是跟数据库不一样的

问题排查

  • 排查发现出问题的数据是没有SQL打印的,根据日志排查,发现是在前面的代码已经执行过相同的SQL了。在事务中,同一句SQL第二次是不会再查询数据库的

获取数据

  • 在事务中首先会根据当前的SQL尝试从缓存中获取,要执行的查询SQL是key,如果拿到就返回,拿不到就需要从数据库中获取

在这里插入图片描述

放入本地缓存

  • 查询数据库后,将结果放入到本地缓存中
    在这里插入图片描述

问题发现

  • 在第一次查询数据库时,将查询到的数据做了处理,这个数据是在内存中的,当第二次查询时,拿到了内存中改过的数据,这样就会看起来和数据库的不一致!!!
举报

相关推荐

0 条评论