如果两个事务(都在RR隔离级别)要求同一个项目是第二级缓存,然后他们修改并存储此项目。现在,为了读取该项,他们没有运行任何SQL,因为它被缓存;那么在这种情况下,他们真的会开始数据库交易吗?当他们提交更改时,他们会遇到丢失的更新问题吗?
答案 0 :(得分:1)
从悲观的角度来看:
如果将第二级缓存配置为参与事务,则只有首先获取写锁定的缓存才能修改缓存对象,然后将更改写入数据库。当第二个事务想要获取写锁时,它必须等到第一个事务结束并释放它。
使用乐观锁定,我想应该发生并发修改异常(或类似名称),第二个事务将重试该操作。