位置: 编程技术 - 正文

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

  • 核定征收的一般纳税人开专票怎么入账
  • 税务局报税怎么操作流程
  • 教育培训学校怎么翻译
  • 员工垫资报销记账
  • 外购入库暂估补差单怎么去除
  • 税控设备发行是什么行业
  • 收到订金如何开票
  • 购房契税应该交给谁
  • 前期认证未抵扣
  • 处理报废的固定资产
  • 出口不退税怎么做账
  • 保证金算费用吗
  • 跨月冲红的发票怎么做账
  • 职工工资个人所得税缴纳标准
  • 进项发票认证抵扣时间是每月的15号吗
  • 进项税额转出的会计分录
  • 收取现金后的收入怎么算
  • 收回购货方前欠货款属于什么
  • 农产品增值税核定扣除办法
  • 无租使用房产如何征收企业所得税
  • 财政拨款收入如何记账
  • 小规模没有发票可以入账吗
  • windows11怎么回到桌面
  • 收入税金账务处理
  • 说一下键盘
  • 金银首饰在哪个软件买
  • 苹果发布macOS13.3预览版
  • windows7中可以设置控制计算机
  • 承包经营税率表
  • Eclipse PHPEclipse 配置的具体步骤
  • 企业税负率过高的坏处
  • ssd训练自己的数据集pytorch
  • elementui动态表单数据回显
  • 14个Python处理Excel的常用操作,非常好用
  • sensor tester
  • 保障金是低保吗
  • 发票必须在什么时候开
  • 跨境电商企业账务如何做账
  • 物业用房需要交维修基金吗
  • sql server 2008数据库密码忘记
  • 事故赔偿给谁
  • 发票冲红视频教程
  • 企业所得税季初和季末怎么算
  • 以前年度多交的房产税现在收到退税款了咋做分录
  • 销项发票什么意思
  • 出售固定资产税率是13%吗
  • 业务招待费专用会计科目
  • 公司验资报告多少钱
  • 无票收入如何做凭证
  • 期末应交税费有余额吗
  • 差旅费包括哪些费用
  • 短期借款计提利息计入什么科目
  • 投资收益科目的借贷
  • 企业发生的经济业务主要有哪些
  • 公司如何注销营业执照
  • mysql的基本介绍
  • 指定为fvtpl
  • mysql57服务无法启动,找不到文件夹
  • ubuntu20.04常用软件
  • linux回退
  • macos 安装win7
  • 手机屏幕尺寸测量工具
  • opengl光照纹理三个球
  • Android GBK与UTF-8
  • 纯css实现轮播图
  • eclipse 不同工程中文乱码问题(可对文件以及工程单独设置)
  • 常用的批处理文件
  • 分享一下相亲时碰见过哪些奇葩事
  • python xml dom
  • ECMAScript5(ES5)中bind方法使用小结
  • 深入理解python递归
  • javascript对象和方法
  • js在div中添加div
  • asyncio使用
  • 无锡税务举报网站
  • 中欧班列补贴政策
  • 辛嵨静志
  • 税收优惠与政府补助对于企业研发来说哪个优惠力度大
  • 税务稽查问题应对心得
  • 2020北京户口指标数量
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设