seeyoulater1 2023-08-26 09:51 采纳率: 76.9%
浏览 14

Mybatis-plus 前后两次查询结果一致的问题

Mybatis-plus 前后两次查询结果一致的问题

日志截图 1

img

这里可以看到 第一次读取的时候 last = 22 时间为 17:49:09.423 且将 last 修改为 23; 并且 在蓝色箭头指出的区域中,第二次查询读取到了 last = 23 的数据;时间为 17:49:09.445,且修改 last 为 24。这里一切正常 last 的值也按照如此 增加到了1048,因为日志会有很多;这里就不全部列举出来了。

img

但是在 17:50:00.010 这里居然又读取到了 last = 22 的数据

img

这里同样是在 17:50:00.012 读取到的 last 是为 1048

现在的问题就是 在第一张截图中 last 已经被成功修改成为 23,并且被成功读取到。而在第二张截图中 与 第一张截图存在明显的时间差的情况下且 last 已经被修改能被其他事务感知,但是他仍然读取到的是 last=22 的数据。这是为啥呢?而且第三张截图中读取到 last=1048 与第二张截图中的时间相差不大。
  • 写回答

2条回答 默认 最新

  • 矫健的退堂鼓鼓手 2023-08-26 11:09
    关注

    可能是由于缓存或并发操作引起的。MyBatis-Plus使用缓存来提高查询性能。当第一次查询执行后,数据被缓存,而第二次查询时可能直接从缓存中获取数据,而不是从数据库中读取最新的数据。可以尝试关闭缓存功能,或者考虑使用更细粒度的锁机制来控制并发访问。或者检查代码中是否有其他地方对last进行了修改。
    还有可能是由于数据库连接池的连接重用导致的。如果连接池中的连接在执行查询后未被正确释放或重置,可能会导致一些意外的行为发生。当last=1048时,可能是由于连接池中的某个连接在处理完查询操作后没有正确重置,而是被后续的查询重用了。因此,读取到了last=22的数据。可以调整连接池的配置,比如设置最大空闲时间,以确保连接在一段时间内没有被使用后能够被正确重置。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月26日
  • 创建了问题 8月26日

悬赏问题

  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api