【乐观锁和悲观锁的概念讲解与通俗示例】

乐观锁

标准概念

乐观锁是一种在数据修改时持有乐观态度的并发控制方法。它假设多用户并发的事务在处理时不会彼此干扰,不会直接产生冲突,因此它不会直接对数据库加锁,而是在数据提交更新时,才会正式对数据的冲突与否进行检测。如果发现冲突(例如,版本号或时间戳不一致),则回滚当前事务,用户需要重新获取数据再尝试更新。

通俗示例

假设有一个共享的文件柜,里面放着一些文件。乐观锁的做法是,每个人都可以随时打开柜子取文件看,但当你想要修改并放回文件时,你会检查文件上是否有其他人的修改标记(比如版本号或时间戳)。如果没有,你就可以放心地修改并放回;但如果有,你就知道文件在你阅读期间被其他人修改过了,此时你的修改就无法直接保存,你需要重新读取文件后再尝试修改。

悲观锁

标准概念

悲观锁是在数据处理过程中,对数据持悲观态度的并发控制方法。它总是假设最坏的情况,即认为多用户并发的事务在处理数据时一定会彼此干扰,产生冲突,因此它会直接对数据加上锁,其他用户必须等待锁被释放后才能继续操作。

通俗示例:

同样以文件柜为例,悲观锁的做法是,当你想要查看或修改文件时,你需要先给文件柜上一把锁,以确保在你查看或修改文件期间,其他人不能打开柜子。这样虽然保证了你的操作不会被其他人干扰,但也使得其他人在你操作期间无法访问文件柜。当你完成操作并释放锁后,其他人才可以继续访问文件柜。

总结

  • 乐观锁:认为冲突不太可能发生,因此它允许用户自由读取数据,只在更新数据时检查冲突。这种策略适用于读多写少的场景。
  • 悲观锁:认为冲突很可能发生,因此它会在数据被读取时立即加上锁,以防止其他用户访问。这种策略适用于写操作频繁的场景。

在实际应用中,我们需要根据具体的应用场景和需求来选择合适的锁策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值