行级锁
- 共享锁,S锁
- 排他锁,X锁
共享锁
事务提交之后,才会释放共享锁
select * from bigdata where id <= 100 lock in share mode;
commit; 提交事务,自定释放锁🔐
rollback; 也释放锁
共享锁可以重复添加
排他锁
只要加排他锁了,其他数据是不能对表进行加锁的
用的最多的,mysql默认会添加排他锁
- update
- delete
无论是添加共享锁,还是排他锁,查询数据是可以的
乐观锁
在表中,加入一个版本号字段
在更新数据时,比较版本号,避免数据不一致
如何减少并发操作的冲突
- 把复杂的 sql语句,拆分成多条简单的 sql语句;减少锁表的时间