Linux 拨号vps windows公众号手机端

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

lewis 7年前 (2018-10-13) 阅读数 9 #VPS/云服务器

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

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

1.概念不同

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

2.使用场景不同

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

3.实现方式不同

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

4.特点不同

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



版权声明

本文仅代表作者观点,不代表米安网络立场。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门