如何基于MySQL的行锁来实现悲观锁?

首先仅仅加上selelct for update是不足够的,还必须利用事务保证操作的原子性。


image.png

保证不会出现多线程并发问题:

  • 原子性(开启事务,只有在执行完所有操作之后才释放掉锁)
  • 行锁 (确保只有一个线程能够回去到对应记录,其他线程阻塞,直到占用线程释放)

仅仅使用事务保证原子性:
其他线程还是可以获取记录进行覆盖。

仅仅使用了行锁:
MySQL的每一个操作都是开启事务的,并且会自动提交,仅仅加入行锁,第一步操作后就事务提交释放,依旧会被覆盖记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容