标签:
死锁
存在于行级锁
存在的条件
1、资源只能同时被一个线程占有
2、资源占有不能被强制剥夺
3、请求和保持占有(在请求占有资源的同时能保持现有资源的占有)
4、死循环(一般做程序的人最关注的点)
一到三点都是mysql innoDB所有的特性,只有四是我们可以控制的。
实际的场景1:
Create Table: CREATE TABLE `department` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Create Table: CREATE TABLE `people` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `department_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `department_fk` (`department_id`), CONSTRAINT `department_fk` FOREIGN KEY (`department_id`) REFERENCES `department` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
下面这张图是事务2执行语句的时候加的锁
标签:
原文地址:http://www.cnblogs.com/gabin/p/5785233.html