位置: 编程技术 - 正文

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 速度慢)

  • 三代税款手续费退费申请
  • 减免税额科目
  • 企业为员工承担的个税可以税前扣除吗
  • 来料加工生产成本账务处理
  • 应付账款和长期负债
  • 转账支票的用途怎么写
  • 代扣公积金会计怎么做账
  • 划拨土地使用权多少年
  • 土地划拨需要缴纳增值税
  • 以前年度损益调整会计分录
  • 本月没开票怎么报税
  • 取得增值税专用发票
  • 哪些费用税务局可以抵扣
  • 外资企业所得税优惠政策
  • 哪些情形可以补胎
  • 预收账款怎么冲减应收账款
  • 机票保险可以报销入账吗
  • 出租土地收入记什么科目
  • 公司需要给员工提供的帮助
  • 不动产进项抵扣新政策2022
  • 结转成本的会计分录摘要怎么写
  • 研发废料收入
  • packethsvc.exe - packethsvc是什么进程 有什么用
  • 银行提取现金会计等式
  • 投资性房地产期末公允价值大于账面价值
  • 液晶显示器容易坏点
  • php变量格式说法错误的是
  • 支付赊购材料款怎么入账
  • 购入无形资产的增值税税率
  • php strlen函数
  • 明细分类账余额借贷怎么填
  • phpexcel读取excel
  • 法定假日的加班费怎么算
  • 深入理解llvm
  • chat form
  • 银行结算方式有哪几种方式?其具体内容是什么?
  • 二维码的实现原理和实现过程
  • chattr i
  • php中&&什么意思
  • 应收账款确认坏账损失
  • 汇算清缴所得税是什么意思
  • linux中ubuntu安装教程
  • mongodb4
  • 收到员工交来现金怎么入账
  • sql server 2005安装失败
  • 公司无流水要交税不
  • 营业外收支的内容
  • 厂家给经销商的活动方案怎么写
  • 现金发放工资有什么风险
  • 向银行按揭贷款时,收入流水不够怎么办?
  • 不动产分期抵扣表数据
  • 原始凭证分类的依据有什么
  • 投资收益的账务怎么处理
  • 电子发票怎么截屏
  • 连锁药店之间调拨药品
  • 会计收入的定义和分类
  • windows vista如何升级
  • freebsd版本选择
  • 新移动硬盘安装视频教程
  • win10微软在哪
  • office2013标准版
  • Linux安装anaconda
  • windows8 如何关机
  • 如何保留windows.old
  • win7右下角时间怎么显示年月日
  • android基础入门
  • eclipce System.loadLibrary报错
  • javascript运用
  • 优质推荐
  • unityapi解析
  • centos6.9查看网卡状态
  • python设计程序
  • js window.screen
  • 暖气费政府补贴
  • 国家税务总局16号文件
  • 小微企业如何申报增值税
  • 增值税普票十万怎么开
  • 尤溪特产春节礼品
  • 按月申报印花税如何计税
  • 增值税发票开具后多长时间可在查询平台查询到?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设