首页 > 网络运维 > Linux/Mysql > 正文

mysql乐观锁与悲欢锁的区别

mysql乐观锁与悲欢锁的区别

什么是mysql乐观锁?一般来讲,mysql乐观锁是以一种假设尽可能多并发操作并不会发生冲突的形式来实现并发控制的。针对每次读取的数据,都会给出一个“版本号”,当进行更新时则将当前版本号进行比较,如果版本号不相同,则说明该条数据正处于编辑状态,那么更新将失败,此时乐观锁将报告发生了冲突,至此乐观锁功能完成了其职能,避免了多并发的更新操作的冲突。

而悲欢锁则是以一种可以提前锁定数据、同步更改数据的方式来实现数据一致性,一般针对一个表操作时会发出两个锁定命令,分别是悲观锁和乐观锁,当开启悲观锁时,系统会在进行操作前先锁定其表,所有不同对此资源的操作在锁定状态下会无法继续进行,这样可以避免数据冲突的发生,而当开启乐观锁时,系统会在更新时给每个数据添加一个版本号,当有其它操作更改了数据后,将其版本号加一,而更新将失败,从而可以达到同步更改数据的目的,从而实现数据一致性。

综上可以总结mysql乐观锁和悲欢锁的区别如下:

1. 实现的方式:mysql乐观锁是在进行更新操作时会添加一个版本号来进行比较,而悲欢锁则是开启两个锁定命令,即悲观锁和乐观锁,悲观锁会锁定表,而乐观锁会给每条数据加上一个版本号。

2. 避免冲突:mysql乐观锁只针对单次读取的数据,当进行更新操作时会进行比较,当发现版本号不同时,说明该条数据正处于编辑状态,则报告发生了冲突,避免数据更新冲突;而悲欢锁则可以针对表进行操作,当开启悲观锁时,系统会先锁定表,所有不同对此资源的操作将无法继续进行;而开启乐观锁后,系统会给每条数据添加版本号,当有其它操作更改了数据后,将其版本号加一,同步更改数据,避免数据冲突的发生。

总之,mysql乐观锁主要是针对单次(读取)数据进行比较版本号来进行冲突报告及避免,而悲欢锁则是可以对整个表进行操作,锁定数据、版本管理来保证数据一致性及避免数据冲突。

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:http://atpbike.com/article/mysql/2629.html

相关推荐

支付宝
微信
赞助本站