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

posted on 2013-08-21 21:13  awildfish  阅读(176)  评论(0编辑  收藏  举报

导航