温馨提示×

mysql中乐观锁和悲观锁有什么区别

养鱼的猫咪
998
2021-04-25 13:19:49
栏目: 云计算

mysql中乐观锁和悲观锁的区别有:1.概念不同;2.使用场景不同;3.实现方式不同;4.特点不同;

mysql中乐观锁和悲观锁有什么区别

mysql中乐观锁和悲观锁的区别有以下几点

1.概念不同

mysql中乐观锁是对加锁持有一种乐观的态度,可以先进行业务操作,不到最后一步不进行加锁,且乐观锁认为加锁一定会成功;而悲观锁是对数据加锁持有一种悲观的态度,在数据处理过程中,数据是一直数据处于锁定状态,且悲观锁需要数据库提供锁机制。

2.使用场景不同

mysql中乐观锁适用于读取操作频繁的场景,当进行频繁的写入操作时,为了保证数据的一致性,应用层需要不断的重新获取数据,会增加数据库的查询操作,从而降低系统的吞吐量;而悲观锁适用于写入操作频繁的场景,当进行频繁的读取操作时,每次读取操作都会对数据进行加锁,会增加锁的开销,从而降低系统的吞吐量。

3.实现方式不同

mysql中乐观锁是通过version方式实现的,是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一;而悲观锁是由数据库本身实现的,可以直接调用数据库的相关语句实现悲观锁。

4.特点不同

mysql中乐观锁的特点是先进行业务操作,不到万不得已不会进行加锁操作,且乐观锁认为加锁一定会成功,只需要在完成业务操作后加锁即可;而悲观锁的特点是先获取锁,再进行业务操作,因为悲观锁认为获取锁失败的可能性很大,它需要先确保获取锁成功后再进行业务操作。



0