转载请说明出处:https://blog.csdn.net/dhtx_wzgl/article/details/85230083
一、Innodb锁
1.1 锁介绍
innodb存储引擎是mysql5.1之后的默认存储引擎,相对于之前的默认存储引擎MyISAM,它有两个不同点:一是支持事物,二是采用了行级锁。下面介绍一下innodb的锁。
共享锁(S):其实就是读锁,它允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁(写锁)。当某一事物去读一行记录时,其他的事物也可以读该行,但是不能进行写操作。
排他锁(X):其实就是写锁,允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。当一个事物对某一行进行写操作时,其他事物的读写操作全部会被block,直到拿到锁为止。
意向共享锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的意向共享锁。
意向排他锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的意向排他锁。
其中意向锁只能加在比行更粗的粒度上,比如库、表、页等。