image.png

行级锁

  • 共享锁,S锁
  • 排他锁,X锁

image.png

共享锁

事务提交之后,才会释放共享锁
image.png

  1. select * from bigdata where id <= 100 lock in share mode;

commit; 提交事务,自定释放锁🔐
rollback; 也释放锁

共享锁可以重复添加

排他锁

只要加排他锁了,其他数据是不能对表进行加锁的

用的最多的,mysql默认会添加排他锁

  • update
  • delete

image.png

无论是添加共享锁,还是排他锁,查询数据是可以的

乐观锁

在表中,加入一个版本号字段
在更新数据时,比较版本号,避免数据不一致

如何减少并发操作的冲突

  1. 把复杂的 sql语句,拆分成多条简单的 sql语句;减少锁表的时间