mysql的锁
共享锁(读锁,S锁)
查询语句加此锁,在本次事务没有提交或回滚时,对查询到的数据进行加锁。
例:
select * from mytable where id = 3 lock in share mode;
排它锁(写锁,X锁)
查询语句加此锁,在本次事务没有提交或回滚时,如果查询条件有索引对查询到的数据进行加锁,如果查询条件没有索引对表进行加锁。
例:
select * from mytable where id = 7 for update;
意向锁
分为意向排它锁(IX)和意向共享锁(IS),它们都为表锁,并相互兼容。
当对表加共享锁或排它锁时,mysql会对整张表加意向锁,如果有其他事务操作此表示时,mysql会告知在哪里有锁。
临键锁(Next-key)
当对表加共享锁或排它锁时,如果进行范围查询且有数据命中,mysql会加此锁,加锁的范围为左开右闭。
间隙锁(GAP)
当对表加共享锁或排它锁时,如果进行范围查询没有数据命中,mysql会加此锁,加锁的范围为左开右闭。