悲观锁和乐观锁的区别?MySQL 怎么实现?
悲观锁:假设会冲突,操作前先加锁(别人进不来)——SELECT ... FOR UPDATE(行锁/表锁,事务内生效)、LOCK IN SHARE MODE(共享锁)、UPDATE/DELETE 自带;适合写多、冲突频繁场景。乐观锁:假设不冲突,提交时校验版本——版本号(version 字段:UPDATE ... SET v=v+1 WHERE id=? AND version=旧值,影响行数 0 则重试)或时间戳/状态字段;适合读多写少、冲突少场景(如电商下单、库存扣减)。选择:冲突概率高用悲观锁,低用乐观锁;乐观锁需注意 CAS 失败重试与 ABA 问题。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。