位置: 编程技术 - 正文

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号吗
  • 软件开发成本核算模板
  • 企业固定资产入账金额标准
  • 预计负债账务处理 固定资产
  • 企业所得税收入是什么意思
  • 资本公积什么时候做账
  • 公司代扣代缴个税完税凭证在哪里可以打印
  • 权益性投资收益的账务处理
  • 跨年度发现的差错
  • 注册资金未缴齐什么意思
  • 工程费用进项税率
  • 国债利润收入属于收入吗
  • 怎么确定是不是本人
  • 汇算清缴应纳税所得额5万要交多少税
  • 凭票报销交通费补贴
  • 使用简易计税方法是什么意思
  • 购入赠品计入什么科目
  • 出口信用证议付支出是什么
  • 到期赎回的理财有风险吗
  • 收到购买商品发票怎么做账
  • 房地产开发企业增值税怎么算
  • linux系统的文件与目录操作
  • 为什么链接网线后无法链接网络
  • php的注释可以使用什么开头
  • 债转股适用范围
  • win11专业版网卡安不了
  • 同一控制下的控股合并与非同一控制下的控股合并
  • 工程完工后的质保金怎么入账
  • 优先股转化
  • PHP/HTML混写的四种方式总结
  • 企业所得税纳税义务发生时间
  • 这是我见过最牛的人英语
  • yolo object detection
  • 十大经典排序算法(动图演示C 实现)
  • tomcat服务器在哪个位置
  • 净化器 ccm
  • 远程调试时,gdbserver运行在调试机
  • 费用报销重复了怎么写情况说明
  • mongodb查看数据库大小
  • 收到员工交来现金怎么入账
  • 免税农产品有哪些类型
  • 一次性伤残补助金怎么查询进度
  • 政府补助的内容
  • 小微企业免税销售额和其他免税销售额的区别
  • 专票多长时间
  • 上市公司限制性股票个人所得税
  • 印花税记入哪个费用
  • 不需要支付的应付账款
  • 小规模纳税人开专票税率是1%还是3%
  • 员工外出培训报告范文
  • 小企业会计准则2023电子版
  • 公司财务部门工作职责
  • 会计中结转属于什么科目
  • 工会经费属于什么科目
  • 新手学会计怎么学
  • sqlserver排序规则怎么看
  • mysql怎么切换到bin目录
  • Mysql中几种插入效率的实例对比
  • xp怎么把ie浏览器放到桌面
  • windows2003远程连接
  • win7系统启动不起来什么原因
  • win8.1无法安装vmware tools
  • android怎么样
  • pycharm配置pyqt
  • U3DPlayer UnityWebPlayer动态改变src
  • angular js表达式
  • python t()
  • nodejs接入微信支付
  • android基础知识入门
  • python中如何去除空格
  • android下的单元测试要配置以下说法不正确的是
  • 江苏国税增值税退税怎么操作
  • 1.6排量算大吗
  • 网上报税失败什么原因
  • 亿企代账怎么增加辅助科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设