当前位置:首页 > 日记 > 正文

InnoDB数据库死锁问题的处理

InnoDB数据库死锁问题的处理
场景描述

的deadlockloserdataaccessexception例外出现在更新表的时间(死锁发现当试图获得锁;尝试重新启动交易)。

问题分析

这个例外,不影响用户的使用,因为数据库自动回滚和重试数据库时遇到了一个僵局。用户的感觉是操作一个小卡顿。但监测一直是异常的,因此它需要解决的问题。

解决方法

在应用程序中使用更新时,尝试使用catch。

我自己封装了一个函数,如下所示。
* 2016-03-15
*林
*在更新表时处理死锁
* /
private void updatewithdeadlock(testmapper制图、试验记录)抛出InterruptedException {
布尔啊;
int重试次数= 5;
做{
哎呀= false;
尝试{
mapper.updatebyprimarykeyselective(记录);
}
抓住(deadlockloserdataaccessexception dlex){
哎呀,真的;
Thread.sleep((长)(Math.random)*(500));
}
最后{
}
(啊= =真}而重试——> 0);
}

我使用MyBatis,所以只是把映射到功能,如果不是MyBatis,你需要创建和关闭数据库连接。

扩展:数据库死锁

数据库死锁中经常遇到的事务型数据库如SQL Server,MySQL的问题,等等。一般来说,数据库死锁问题并不严重,除非数据库死锁问题经常导致用户无法operate.try-catch可以在应用程序中完成的。因此数据死锁的形成

InnoDB实现行级锁,它分为共享锁(S)和互斥锁(X)。

共享锁用于事务读取行。

互斥体用于事务更新或删除行。

当客户A持有共享锁并请求互斥x时;同时,客户B持有互斥x并请求共享锁s。在上述情况下,数据库死锁将发生。

数据库死锁的例子

首先,客户A创建一个表T并插入一段数据到T中,而客户机A启动一个选择事务,因此它保存共享锁。
MySQL >创建表T(I型)= InnoDB引擎;
查询OK,0行受影响(1.07秒)

插入到t(i)值(1);
查询OK,1行受影响(0.09秒)

开始事务;
查询OK,0行受影响(0秒)

从t = i 1锁定共享模式;
------ + +
我| |
------ + +
1 | |
------ + +

然后,客户B启动一个新事务,新事务是删除表T中的唯一数据。
开始事务;
查询OK,0行受影响(0秒)

从t删除i = 1;

删除操作需要x,但是互斥x和共享锁s是不兼容的。因此,删除事务放在锁请求队列中,客户B被阻塞。

最后,客户A也希望删除表T中的数据:
从t删除i = 1;
错误1213(40001):在试图获取锁时发现死锁;
尝试重新启动交易

僵局即将来临!由于客户A需要锁定X删除行,客户B持有锁X,并正在等待客户A释放锁:

客户A:锁住锁,等待客户B释放锁X。

客户B:持有锁X,等待客户A释放锁s。
生死锁后,InnoDB会产生一个客户的错误信息和释放锁。返回到客户信息:

错误1213(40001):在试图获取锁时发现死锁;

尝试重新启动交易

因此,另一个客户可以正常执行任务。

相关文章

WPS2009文档分成若干列

WPS2009文档分成若干列

文档,电脑软件,我们知道,默认情况下,在WPS2009的软件,我们只能选择使用5种类型的列,它是明确的,列类型不符合要求的,可事实上wps2009ldquo柱;自定义列对话框中,为了获得更多的列选项。 打开WPS2009文档窗口,选择格式菜单;;列选项。打开列对话框,在这里…

通过HTML5画布API绘制曲线和循环教

通过HTML5画布API绘制曲线和循环教

循环,绘制,曲线,教程,电脑软件,在HTML5的canvasrenderingcontext2d对象还提供了一个特殊的方法画圆或圆弧线。请参考下列属性和方法: Javascript代码将内容复制到剪贴板。 (X,Y,圆弧半径,startrad,endrad,逆时针) 对坐标的帆布画布上绘制一条曲线(x,y)为中…

powerpooint教程:出版PPT演示文件在

powerpooint教程:出版PPT演示文件在

文件,教程,在线播放,演示,电脑软件,把你的笔记本电脑拿出来演示你的PowerPoint文档越来越普遍,但是带几个笨重的家伙不方便,你有办法解决这个问题吗!您将能够在因特网上发布演示文档。 注:本文描述的技术已经在PowerPoint 2003下测试过。 首…

使用PS图象处理软件滤波器把写真照

使用PS图象处理软件滤波器把写真照

照片,滤波器,图象,处理软件,写真,在本文中,我们介绍了使用PS图象处理软件过滤处理的人像照片为手绘动画特效的方法和技巧。 1,在PS图象处理软件开放的肖像。注意确保图像文件是RGB色彩模式。如果不是RGB色彩模式,选择菜单图像——模式——,,RGB…

不可预见的世界末日场景PS图象处理

不可预见的世界末日场景PS图象处理

图象,末日,处理软件,场景,世界,PS教程:综合了不可预知的末日场景,本文创建了一个不可预知的未来世界场景,我们主要使用了调整层、遮罩和一些效果来达到最终效果,希望您喜欢教学支持网。 最终效果: 总共准备了8种材料。 创建一个新文档,打开几…

解决方案IE11不能使用迅雷和其他插

解决方案IE11不能使用迅雷和其他插

迅雷,插件,解决方案,电脑软件,在IE 11的使用发现,点击下载地址不能自动弹出迅雷下载任务窗口的一些朋友,QQ旋风也有类似的问题。最后通过工具栏无法显示。这显然是IE浏览器11以上的插件引起的;脱轨;如何解决它通过分析,发现IE 11默认的安全性增…

一套HTML5画布基本绘图实例代码集

一套HTML5画布基本绘图实例代码集

实例代码,绘图,电脑软件,基本绘图 xml代码将内容复制到剪贴板。 VaR的画布document.getelementbyid('canvas); 如果(帆布。getContext){ VaR上下文= canvas.getcontext(二维的); / /宽度 context.linewidth = 4; 钢笔颜色 context.strokestyle ='…

眼罩会导致系统自动关机。

眼罩会导致系统自动关机。

系统,眼罩,自动关机,电脑软件,问:我安装了小软件的眼睛保护。只要我运行它,系统就会自动关闭。我退出后不会自动关机,该怎么解决呢 答:你打开眼睛的保护窗口检查网络速度小于N分钟低于NKB /关机的选项misselected。如果选择此项,它会导致网络不…

CSS文字模式文字排版属性使用教程

CSS文字模式文字排版属性使用教程

文字,模式,属性,文字排版,使用教程,Grammar: CSS代码将内容复制到剪贴板。 写作模式:LR结核病结核病RL | CSS代码将内容复制到剪贴板。 键值 写入模式:水平TB; 写作模式:垂直RL; 写作模式:垂直LR; CSS代码将内容复制到剪贴板。 关键词继承IE8 + /…

HTML5画布基本绘图线

HTML5画布基本绘图线

绘图,电脑软件,它是HTML5中的一个新标签,用于绘制图形。事实上,这个标签与其他标签相同。它的特点是,标签可以得到canvasrenderingcontext2d对象。我们可以通过Javascript脚本控制对象。 它只是一个绘图容器,除了id、类、样式等属性外,还有高度和宽度…

mysql使用分组通过分组来实现记录n

mysql使用分组通过分组来实现记录n

方法,来实现,电脑软件,mysql,本文演示了MySQL使用分组来实现前N条记录的方法: mysql中N分组前分组的分组实现 MySQL分组,记录 在分组之后,如何将每个组的前两位告诉我在MySQL中n条条记录之前分组的实现。 这是一个测试表(不知道怎么想,然后…

古城堡的梦幻般的雾效果与PS图象处

古城堡的梦幻般的雾效果与PS图象处

图象,处理软件,城堡,梦幻般,效果,本教程的合成比较容易,而且使用的材料比较少。只有背景和城堡的图片,只有溶解,添加你最喜欢的颜色的颜色。 最后的效果 1、打开下面所示的材质,把城堡的图片拖到天空图片上,如果空间不够,可以稍微增加画布的高…