MySQL乐观锁需要更改隔离级别为读提交吗?
mysql乐观锁是否需要更改隔离级别为读提交
乐观锁需要在事务执行期间读取记录是否发生更改,这使得许多开发者认为需要将事务隔离级别更改为“读提交”。然而,是否需要进行此更改引发了一系列讨论。
保持可重复读隔离级别
mysql的默认隔离级别是可重复读(rr)。在这个级别下,事务中读到的数据在事务完成之前不会被其他事务修改。这种隔离级别保证了乐观锁的正确执行,因为它允许事务读取其他提交事务后的最新记录。
使用当前读
一些开发者认为,即使保持rr隔离级别,乐观锁仍然可以通过“当前读”实现。当前读是一种锁类型,允许事务读取已提交的记录,即使这些记录已被其他并发事务修改。
测试结果
本文中的开发者通过实际测试,证实了使用当前读的说法是正确的。她在rr隔离级别下执行以下更新语句:
update ... where stock=...
测试表明,该语句确实会加x锁,这是一种当前读锁。这意味着该语句在执行时,将读取已提交的记录(尽管其他并发事务可能会看到更新之前的旧数据,这是rr隔离级别固有的限制)。
结论
因此,在mysql中实现乐观锁时,不需要将事务隔离级别更改为读提交。默认的rr隔离级别,配合当前读锁,足以确保并发事务中的数据一致性和乐观锁的正确执行。
以上就是MySQL乐观锁需要更改隔离级别为读提交吗?的详细内容,更多请关注其它相关文章!