向innodb数据表中写数据死锁。搜集资料如下
一、形成死锁的四个必要条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。即A在等待B占有的资源、B在等待C占有资源。。。Z在等待A占有的资源。
破坏上面任一条件都可避免死锁。
发生死锁后的解决办法:
1、撤消陷于死锁的全部进程;
2、逐个撤消陷于死锁的进程,直到死锁不存在;
3、从陷于死锁的进程中逐个强迫放弃所占用的资源,直至死锁消失。
4、从另外一些进程那里强行剥夺足够数量的资源分配给死锁进程,以解除死锁状态
参考 http://zhidao.baidu.com/question/65925327
二、innodb行级锁定原理
搜索或扫描一个表索引之时,InnoDB以这样一种方式实行行级锁定,它对任何遇到的索引记录设置共享的或独占的锁定。因此,行级锁定实际是索引记录锁定。
三、所遇到死锁
5台服务器同时以SQL语句:
REPLACE INTO tableName VALUES('tid1','currentTimestamp'...),('tid1','currentTimestamp'...),...('tid1','currentTimestamp'...);#5000条记录,其中tid1 ,currentTimestamp 联合索引做主索引
向mysql innodb表写入数据,报如下错误:
Deadlock found when trying to get lock; try restarting transaction
四、解决方式
将5000条记录按主索引tid,currentTime排序后拼成SQL语句,这样可以破坏四条件中的第四个,以避免死锁。
相关推荐
MySQL锁类型以及查询锁表问题、解锁MySQL中select * for update锁表的范围MySQL中select * for update锁表的问题由
MySQL Innodb锁解决并发问题
系统介绍mysql锁机制
MYSQL锁机制全揭秘,锁对数据库而言显得尤其重要,也更加复杂。
主要介绍了MYSQL锁表问题的解决方法,结合实例形式分析了MySQL锁表问题的常见情况与相应解决方法,需要的朋友可以参考下
主要通过案例演示了mysql的读写锁问题;帮助理解读写锁的概念、特征。主要通过案例演示了mysql的读写锁问题;帮助理解读写锁的概念、特征。主要通过案例演示了mysql的读写锁问题;帮助理解读写锁的概念、特征。主要...
│ 第十课MySQL锁机制和事务.pdf │ 第四课SQL基础语法.pdf │ ├─新版MySQL DBA综合实战班 第01天 │ 0_MySQL高级DBA公开课视频.avi │ 1_数据库通用知识介绍.avi │ 2_MySQL8常规安装.avi │ 3_MySQL8非常规安装...
MySQL锁与事务知识脑图
1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误 2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 2.4 在...
MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁...
MySQL锁详解,锁还是非常重要的,无论解决工作的死锁还是面试都会有
17.MySQL高级锁MyISAM表锁查看锁争用情况.avi 18.MySQL高级锁InnoDB行锁介绍及背景知识.avi 18.MySQL高级锁InnoDB行锁类型.avi 19.MySQL高级锁InnoDB行锁基本演示.avi 20.MySQL高级锁InnoDB行锁行锁升级为表锁.avi ...
MySQL的锁机制解析,面试经常问到的,DBA必看
MySQL的锁、锁机制的解释。想看就看,勿过于勉励
此文档中详细记载了,Mysql(MyISAM)的读写互斥锁问题的解决方法,希望可以帮助到你!
资源名称:mysql锁详解资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQL 邮件列表及如何提问或报告错误 2.1 MySQL邮件列表 2.2 提问或报告错误 2.3 怎样报告错误或问题 ...
mysql的锁机制和事务
Mysql事务以及锁原理讲解,方便大家了解mysql事务和锁的原理