死锁
存在于行级锁
存在的条件
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
我去,截图直接贴上去,第一次能看,后面就没了,唉,好烦,有时间再整理了。