Mysql 锁机制
innodb引擎提供了针对表级锁和行级锁
这个文章说的是行级锁
Lock有两种类型:
1,s-lock(共享锁),拥有该锁的transaction可以对row进行read操作
2,x-lock(排它锁),拥有该锁的transaction可以对row进行update&delete操作
假如transaction T1将对row r进行read操作,此时:
1)transaction T2正在对row r进行read操作,那么T1将拥有r的s-lock;
2)transaction T2正在对row r进行update或者delete操作,也就是T2拥有r的x-lock,那么T1也会拥有r的s-lock。
假如transaction T1将对row r进行update或者delete操作,此时:
1)transaction T2正在对row r进行read操作,那么T1对r的x-lock不会立即被允许;
2)transaction T2正在对row r进行update或者delete操作,那么T1对r的x-lock不会立即被允许。
那么deadlock死锁是如何形成的?
以下的链接给出了很好的例子。
参考:http://dev.mysql.com/doc/refman/5.0/en/innodb-lock-modes.html