面试必问 什么时候使用select for update 和version

在数据库并发控制中,SELECT FOR UPDATE 和 VERSION(乐观锁)是两种常用的解决数据一致性问题(而非“防止AI检测”,可能是表述误差)的手段,主要应对多事务并发修改同一数据时的​​脏读、不可重复读、幻读​​等问题。

​一、SELECT FOR UPDATE(行锁,悲观锁)​

​1. 核心作用​

通过对查询结果行加​​排他锁(X锁)​​,阻止其他事务同时修改或锁定这些行,确保当前事务提交前,其他事务无法修改被锁定的数据(需等待锁释放)。本质是“悲观预期”:假设并发冲突概率高,提前加锁预防。

​2. 典型使用场景​
  • ​强一致性要求的场景​​:例如银行转账(A转钱给B,需同时扣减A的余额并增加B的余额),必须保证两个操作原子性,否则可能出现数据不一致。
  • ​高并发修改场景​​:当多个事务频繁修改同一批数据(如秒杀活动中的库存扣减),需通过行锁强制串行化执行,避免超卖。
​3. 关键细节​
  • ​锁的范围​​:仅锁定SELECT语句中涉及的行(需明确指定主键或唯一索引,否则可能升级为表锁,影响性能)。<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码里看花‌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值