mysql默认使用悲观锁_mysql乐观锁和悲观锁详解

本文详细介绍了MySQL中的乐观锁和悲观锁,包括它们的概念、实现方式以及应用场景。乐观锁主要通过版本号机制防止并发问题,而悲观锁则通过数据库层面的锁机制确保数据的一致性。在多读场景下,乐观锁适合提高吞吐量;而在多写场景下,悲观锁能有效避免数据冲突。
摘要由CSDN通过智能技术生成

mysql乐观锁和悲观锁详解

相信很多朋友在面试的时候,都会被问到乐观锁和悲观锁的问题,如果不清楚其概念和用法的情况下,相信很多朋友都会感觉很懵逼,那么面试的结果也就不言而喻了。

那么乐观锁和悲观锁到底是个什么东西,用它能来做什么呢?

相信大家都遇到这种场景,当很多人(一两个人估计不行)同时对同一条数据做修改的时候,那么数据的最终结果是怎样的呢?

这也就是我们说的并发情况,这样会导致以下两种结果:更新错误,你修改之后的数据可能被别人覆盖了,导致你很懵逼,甚至怀疑自己开发的功能是否有问题;

脏读,数据更新错误,导致读数据也是错的,查询出一些默认奇妙的数据,看到的不是你自己修改的结果。

这样的问题怎么解决呢?于是乎,锁就这样产生了,锁分为乐观锁和悲观锁,它的目的是用来解决并发控制的问题。

MyISAM引擎不支持事务,所以不考虑它有乐观锁和悲观锁概念。MyISAM只有表锁,锁又分为读锁和写锁。在这里我们只讨论InnoDB引擎。

需要注意的是,乐观锁和悲观锁并不是解决并发控制的唯一手段(也可以使用消息中间件kafka,MQ之类的作为缓冲等等),而且乐观锁和悲观锁并不仅限制在mysql中使用,它是一种概念,很多其他的应用,如redis,memcached等,只要存在并发情况的,都可以应用这种概念,只是方式上有些差别而已。

一、乐观锁

乐观锁,简单地说,就是从应用系统层面上做并发控制,去加锁。

实现乐观锁常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值