码迷,mamicode.com
首页 > 数据库 > 详细

mysql死锁--源于外键关联

时间:2016-08-18 21:26:46      阅读:725      评论:0      收藏:0      [点我收藏+]

标签:

死锁

 

存在于行级锁

 

存在的条件

  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执行语句的时候加的锁

技术分享

 

mysql死锁--源于外键关联

标签:

原文地址:http://www.cnblogs.com/gabin/p/5785233.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!