【手动事务引起的查询结果不一致与DML操作锁超时问题】
一个线程没有正常提交事务,那么事务就会被挂起,当线程销毁后,数据库连接归还给连接池,对应的数据库连接的状态就还存在事务未提交。其他的线程进来复用链接资源的时候,就会不知不觉被加入到已存在的事务中,甚至没有事务的查询都会加入到已存在的事务中,因为MybatisSqlSession他会先看看当前链接有没有事务,有就fetch旧的出来,没有就生成一个新的Session。所以有概率出现,查询时会拿到未完成事务提交的Session。
原创
2023-04-11 12:03:33 ·
204 阅读 ·
2 评论