MySQL 的悲观锁和乐观锁如何使用

大家好,今天来为大家分享mysql使用乐观锁时,自带的悲观锁会失效么的一些知识点,和为什么不建议用乐观锁的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

本文目录

  1. 乐观锁拦截器原理
  2. 分布式锁桥的优缺点
  3. cas乐观锁特性
  4. mysql使用乐观锁时,自带的悲观锁会失效么

乐观锁拦截器原理

数据在一般情况下不会造成冲突,别人不会去修改,所以在访问记录前不会加排它锁。但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号,时间戳来等记录。因为不加锁,所以乐观锁在多读的情况下,可以极大的提升我们的吞吐量。

分布式锁桥的优缺点

优点:乐观锁的性能高于悲观锁,并不容易出现死锁。

缺点:乐观锁只能对一张表的数据进行加锁,如果是需要对多张表的数据操作加分布式锁,基于版本号的乐观锁是办不到的。

cas乐观锁特性

CAS操作采用了乐观锁的思想

乐观嘛,总是以为自己可以成功完成操作。在多个线程同时使用时使用CAS操作一个变量时,只有一个线程会胜出并成功更新,其余均失败,失败的线程不会被挂起,并且允许再次尝试;CAS即使没有锁,也可以发现其他线程对当前线程的干扰;

mysql使用乐观锁时,自带的悲观锁会失效么

这是两个不同的概念。

1.在表中增加version,是由你自己写的程序或者sql的where条件控制的,并没有真正的到达mysql的事务层。2.悲观锁是mysql自己维护的锁机制,你加不加version跟悲观锁没关系,而只跟你设置的事务级别有关系

关于本次mysql使用乐观锁时,自带的悲观锁会失效么和为什么不建议用乐观锁的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

MySql锁机制之乐观锁和悲观锁的验证过程