日志截图 1
这里可以看到 第一次读取的时候
last = 22
时间为17:49:09.423
且将last
修改为23
; 并且 在蓝色箭头指出的区域中,第二次查询读取到了last = 23
的数据;时间为17:49:09.445
,且修改last
为 24。这里一切正常last
的值也按照如此 增加到了1048
,因为日志会有很多;这里就不全部列举出来了。
但是在
17:50:00.010
这里居然又读取到了last = 22
的数据
这里同样是在
17:50:00.012
读取到的 last 是为1048
last
已经被成功修改成为 23
,并且被成功读取到。而在第二张截图中 与 第一张截图存在明显的时间差的情况下且 last
已经被修改能被其他事务感知,但是他仍然读取到的是 last=22
的数据。这是为啥呢?而且第三张截图中读取到 last=1048
与第二张截图中的时间相差不大。可能是由于缓存或并发操作引起的。MyBatis-Plus使用缓存来提高查询性能。当第一次查询执行后,数据被缓存,而第二次查询时可能直接从缓存中获取数据,而不是从数据库中读取最新的数据。可以尝试关闭缓存功能,或者考虑使用更细粒度的锁机制来控制并发访问。或者检查代码中是否有其他地方对last进行了修改。
还有可能是由于数据库连接池的连接重用导致的。如果连接池中的连接在执行查询后未被正确释放或重置,可能会导致一些意外的行为发生。当last=1048时,可能是由于连接池中的某个连接在处理完查询操作后没有正确重置,而是被后续的查询重用了。因此,读取到了last=22的数据。可以调整连接池的配置,比如设置最大空闲时间,以确保连接在一段时间内没有被使用后能够被正确重置。
【相关推荐】