Java教程

17、数据库悲观锁和乐观锁的原理和应用场景分别有什么?

本文主要是介绍17、数据库悲观锁和乐观锁的原理和应用场景分别有什么?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

悲观锁,先获取锁,再进行业务操作,一般就是利用类似 SELECT … FOR UPDATE 这样的语句,对数据加锁,避免其他事务意外修改数据。

当数据库执行SELECT … FOR UPDATE时会获取被select中的数据行的行锁,select for update获取的行锁会在当前事务结束时自动释放,因此必须在事务中使用。

乐观锁,先进行业务操作,只在最后实际更新数据时进行检查数据是否被更新过。Java 并发包中的 AtomicFieldUpdater 类似,也是利用 CAS 机制,并不会对数据加锁,而是通过对比数据的时间戳或者版 本号,来实现乐观锁需要的版本判断。

这篇关于17、数据库悲观锁和乐观锁的原理和应用场景分别有什么?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!