mysql乐观锁和悲观锁的区别

乐观锁

                顾名思义,乐观锁的想法很乐观,对数据库进行操作前一般认为此次操作不会产生冲突,因此操作时并不进行锁操作,等到操作结束时才判断是否冲突。

                通常的实现方式是:对表的数据进行操作时,同时将数据表的版本字段取出,等到操作完毕进行提交时,将数据版本号与表内的数据版本号进行比较,如果相等,说明这段时间内没有别的事务对数据表进行操作,则将版本号加一,并予以更新。否则认为是过期数据,进行回滚。

                乐观锁不是数据库本身自带的锁,需要程序员自己实现。

悲观锁

                顾名思义,当一个事务对数据表进行操作时,想法很悲观,因此每次进行数据库操作前,都将数据表进行加锁,与java的synchronized相似,当其他事务进行数据库操作时,必须等到获取锁后,才能进行操作,因此悲观锁的效率很低。

                悲观锁是由数据库自身实现的,我们需要用的时候只需调用即可。

猜你喜欢

转载自blog.csdn.net/a274537260/article/details/80356521