如果使用选项 Engine = InnoDB 创建表,则无需自行锁定表,将创建 InnoDB 监视器。
CREATE TABLE t (i INT) ENGINE = InnoDB;
监视器自动锁定表,但锁定不是针对单行 InnoDB 会为操作/事务锁定孔表。
也许用户只想阅读他在孔表上获得 s 锁的表。同时其他用户也可以读取该表,但是如果他想删除一行并且他请求 x 锁,他必须等待其他用户,直到他释放他的 s 锁。
MYSQL 锁类型兼容性矩阵。
X IX S IS
X Conflict Conflict Conflict Conflict
IX Conflict Compatible Conflict Compatible
S Conflict Conflict Compatible Compatible
IS Conflict Compatible Compatible Compatible
请阅读 mysql 文档:
InnoDB 监视器 - http://dev.mysql.com/doc/refman/5.1/en/innodb-monitors.html
InnoDB 锁定模式 - http://dev.mysql.com/doc/refman/5.1/en/innodb-lock-modes.html