MySQL死锁的原因及解决方法

  介绍

这篇文章主要介绍“MySQL死锁的原因及解决方法”,在日常操作中,相信很多人在MySQL死锁的原因及解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“MySQL死锁的原因及解决方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一,问题由来

这是我同事问我的一个问题,在网上看到了如下案例,本案例RC RR都可以出现,其实这个死锁原因也不叫简单,我们来具体看看:

<编辑id=" h6-u6784u9020u6570u636E ">构造数据一直编辑 <>以前CREATE  database  deadlock_test;   use  deadlock_test;   CREATE  TABLE “push_token”, (   “id”,才能长整型数字(20),NOT  NULL  AUTO_INCREMENT,   “令牌”,才能varchar (128), NOT  NULL  COMMENT  & # 39; push 标记# 39;   “app_id”,才能varchar (128), DEFAULT  NULL  COMMENT  & # 39; appid& # 39;   “删除”,才能非常小的整数(1),NOT  NULL  COMMENT  & # 39;是否已删除,0:否,1:是& # 39;   ,,PRIMARY  KEY  (id),   ,,UNIQUE  KEY “uk_token_appid”,(“令牌”,“app_id”)   ),引擎=InnoDB  AUTO_INCREMENT=3384, DEFAULT  CHARSET=utf8 评论=& # 39;pushtoken表& # 39;;   insert  into  push_token  (id,令牌,,app_id,,删除),值(1,“token1" 1 0); <编辑id=" h6-u64CDu4F5Cu6570u636E ">操作数据 s1 (TRX_ID367661) s2 (TRX_ID367662) s3 (TRX_ID367663)开始;更新push_token组删除=1,令牌=token1和app_id=' 1 ';


开始;(1)删除从push_token id;


开始;更新push_token组删除=1,令牌=token1和app_id=' 1 ';承诺;

查询好,0行影响(0.00秒)查询好了,1行影响(17.32秒)错误1213(40001):死锁发现当试图让锁;尝试重新启动事务

<李>

<李>
MySQL死锁的原因及解决方法