位置: 编程技术 - 正文

InnoDB数据库死锁问题处理(mysql innodb锁)

编辑:rootadmin

推荐整理分享InnoDB数据库死锁问题处理(mysql innodb锁),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:数据库死锁处理方法,mysql innodb锁,mysql innodb死锁,mysql innodb锁,数据库中死锁产生的原因和解决死锁的方法,mysql innodb锁,数据库死锁语句,mysql innodb锁,内容如对您有帮助,希望把文章链接给更多的朋友!

场景描述

在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found when trying to get lock; try restarting transaction...)。

问题分析

这个异常并不会影响用户使用,因为数据库遇到死锁会自动回滚并重试。用户的感觉就是操作稍有卡顿。但是监控老是报异常,所以需要解决一下。

解决方法

在应用程序中update的地方使用try-catch。

我自己封装了一个函数,如下。

我用的是mybatis,所以只需将mapper传进函数,如果不用mybatis,需要自己创建并关闭数据库连接。

延伸:数据库死锁

数据库死锁是事务性数据库 (如SQL Server, MySql等)经常遇到的问题。除非数据库死锁问题频繁出现导致用户无法操作,一般情况下数据库死锁问题不严重。在应用程序中进行try-catch就可以。那么数据死锁是如何产生的呢?

InnoDB数据库死锁问题处理(mysql innodb锁)

InnoDB实现的是行锁 (row level lock),分为共享锁 (S) 和 互斥锁 (X)。

共享锁用于事务read一行。互斥锁用于事务update或delete一行。当客户A持有共享锁S,并请求互斥锁X;同时客户B持有互斥锁X,并请求共享锁S。以上情况,会发生数据库死锁。如果还不够清楚,请看下面的例子。

数据库死锁例子

首先,客户A创建一个表T,并向T中插入一条数据,客户A开始一个select事务,所以拿着共享锁S。

然后,客户B开始一个新事务,新事务是delete表T中的唯一一条数据。

删除操作需要互斥锁 (X),但是互斥锁X和共享锁S是不能相容的。所以删除事务被放到锁请求队列中,客户B阻塞。

最后,客户A也想删除表T中的那条数据:

死锁产生了!因为客户A需要锁X来删除行,而客户B拿着锁X并正在等待客户A释放锁S。看看客户A,B的状态:

客户A: 拿着锁S,等待着客户B释放锁X。客户B: 拿着锁X,等待着客户A释放锁S。

发生死锁后,InnoDB会为对一个客户产生错误信息并释放锁。返回给客户的信息:

ERROR (): Deadlock found when trying to get lock;try restarting transaction所以,另一个客户可以正常执行任务。死锁结束。

MYSQL5.7.9开启慢查询日志的技巧 用MYSQL5.7.9作为ZABBIX2.4.7的监控数据库.前段时间开启了慢查询日志,后来发现慢查询日志膨胀到了M查看最后条大部分都是0.1秒的后来想改,以前是动态

MySQL命令行界面中出现字符错误提示的原因及解决方法 ERROR(HY):Can'tinitializecharactersetgb搞了好半天,MySQL都重装了两次,号悲剧。。。之前设置了系统编码全都是UTF-8了的vi/etc/sysconfig/inLANG=zh_CN.UTF-8LANG

简述MySQL分片中快速数据迁移 推荐阅读:MySQL数据库跨操作系统的最快迁移方法mysql备份与迁移数据同步方法操作实践背景:travelrecord表定义为个分片,尝试将个分片中的2个分片

标签: mysql innodb锁

本文链接地址:https://www.jiuchutong.com/biancheng/319765.html 转载请保留说明!

上一篇:Mysql数据库分库和分表方式(常用)(Mysql数据库分库分表语句)

下一篇:MYSQL5.7.9开启慢查询日志的技巧(mysql 速度慢)

  • 企业为何放弃免税政策
  • 公路客运企业应走集约化经营
  • 出租划拨土地收费合法吗
  • 发票遗失如何入账
  • 专用发票压线了可以拒收吗
  • 计算应交消费税需要扣除代收代缴消费税吗
  • 暂存款属于什么费用
  • 会计中制造费用是什么意思
  • 预付货款工程完工后如何结转?
  • 解除合同一次性补偿金怎样算个人所得税
  • 公司向贷款公司贷款做账分录
  • 收据开17%的票税负因子是多少?
  • 从国内往国外寄东西要多久
  • 财务人员需具备的基本素质和条件是什么
  • 小规模纳税人隔月可以作废发票吗
  • 反写是清卡的意思吗
  • 会计相关行业的工作职责和招聘要求
  • 土地在会计中怎么处理
  • 全资子公司向母公司提供劳务服务怎么做账
  • 多交附加税不退怎么做分录
  • 华为鸿蒙怎么看手机型号
  • 计提税金怎么提
  • 子公司可以接总公司的工程吗
  • PHP:oci_fetch_array()的用法_Oracle函数
  • 有形动产增值税税率是多少
  • 借支单还款后借支单要还么
  • 支付手续费委托代销是什么意思
  • 酒店预收款管理制度
  • phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
  • 新企业会计准则是哪一年颁布的
  • 期初未缴纳税额怎么计算
  • php 函数作为参数
  • 现在用yii框架的人还多么
  • js生成条形码的方式有哪些
  • php解析xml文件
  • 期末结转会计分录模板
  • 关于非营利组织企业所得税免税收入问题的通知
  • 银行承兑汇票到期怎么兑现
  • 低值易耗品还需要录入明细吗
  • 资产负债表应付职工薪酬是负数是什么原因
  • 固定资产会计上与税法上提折旧时间
  • mysql子查询关键字
  • 兼职人员工资需要交个税吗
  • 汽车维修公司做账基本流程
  • 小规模纳税人有哪些
  • 个人补缴的医保有钱返吗
  • 销售折扣可以开红字专票吗
  • 虚开发票要如何处理?
  • 预收账款怎么用
  • 不带息银行汇票
  • 数字证书如何申报社保
  • 投标保证金会计科目
  • 预计销售收入增长率怎么算
  • 根据企业会计准则第11号规定,下列关于等待期
  • 企业如何计算增值税
  • 应付职工薪酬账户贷方登记的是
  • windows installation disc
  • ubuntu chsh
  • 在windows中下列叙述正确的有
  • 电脑右下角windows设置在哪
  • linux编译安装php扩展
  • windows10窗口设置在哪
  • dw导入excel
  • node connect
  • linux中执行.sh文件
  • JavaScript中的变量名不区分大小写
  • python正则匹配url
  • 原生js实现节日变化
  • 简略说明本岗位最高风险的防范措施和现场处置方案
  • linux重定位命令
  • cument.execCommand()用法深入理解
  • 在windows下搭建snort和base
  • python的排序方法
  • 重庆国家税务局发票查询
  • 对外支付税务备案表网上核验
  • 如何办理委托银行卡业务
  • oppo纳税额
  • 杭州国家税务局陈英泽
  • 郑州金水区税务大厅电话
  • 郑州房产交契税在哪里交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设