数据库悲观锁和乐观锁介绍一下?

悲观锁和乐观锁是在并发控制中常用的两种锁机制,用来解决多个事务同时操作数据时可能出现的问题。

悲观锁(Pessimistic Locking)是假设最坏的情况,每次去获取数据的时候都认为其他事务会修改数据,所以在整个数据处理过程中将数据锁定,其他事务无法进行修改,直到该事务完成。在数据库中,悲观锁一般就是我们提到的行锁或表锁,如SELECT…FOR UPDATE就是典型的悲观锁操作。

乐观锁(Optimistic Locking)则是假设最好的情况,每次去获取数据的时候都认为其他事务不会修改数据,所以不会上锁,但是在更新时会判断在此期间有没有其他事务更新了这个数据。乐观锁适用于读多写少的应用场景,因为不用经常去做数据的互斥操作,可以提高并发效率。乐观锁在数据库中一般是通过版本号机制实现的,每次读取数据时都会获取当前的版本号,在更新时比较版本号,如果版本号发生改变,则说明有其他事务已经修改了数据,那么就需要进行相应的处理,如重试或者回滚。

发表评论

后才能评论