MySQL乐观锁、悲观锁
2021/12/31 19:07:13
本文主要是介绍MySQL乐观锁、悲观锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
乐观锁、悲观锁
- 悲观锁,是属于数据库中的一种锁机制,但是乐观锁并非真正的数据库锁
- 两种锁都是数据库在应对并发操作时,防止出现资源抢夺的,基于不同人生观所实现两种解决方案
悲观锁
数据库终端操作:
begin; -- 开启事务 select * from db_student where student_id = 5 for update; -- 添加一把更新锁【悲观锁】 在事务提交之前,任何第三方连接都不能修改 student_id = 5这条数据 commit; -- 提交事务
悲观锁问题:
1. 提前锁定数据,形成串行化,形成阻塞,不利于性能发挥,不适用高并发场景。
2. 悲观锁只能保证数据的一致性,不能保证脏数据的出现
乐观锁
乐观锁的出现就是为了解决悲观锁的问题
举例说明:
举例:双11活动,商城里面id=5的商品的库存=10了,现在我们要基于乐观锁和悲观锁来解决下单过程中,出现的资源抢夺现象,避免出现超卖(商品数量不能为负数)。 乐观锁: ---> begin; 开启事务 ---> 先查看库存,记录当前库存 num=10 ---> 进行下单操作,买6件 ---> 付款 ---> 扣除库存 update goods set num=num-6 where num=10 and id=5; # 增加更新条件,判断库存是否还是原来 ---> 如果执行成功,则表示没有人抢,购买成功 如果执行事变,则表示已经有人先抢购 ---> commit; 悲观锁: ---> begin; 开启事务 ---> 先给id=5的数据,加锁 select * from goods where id=5 for update; ---> 进行下单操作,买6件 ---> 付款 ---> 扣除库存 update goods set num=num-6 where id=5 ---> 执行成功解锁 ---- commit; 提交事务
这篇关于MySQL乐观锁、悲观锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南