位置: 编程技术 - 正文

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

  • 金蝶软件中怎么登记应该税费
  • 法人和办税人
  • 月末一般无余额的有
  • 会计凭证包括哪三种
  • 增值税专用发票的三流合一是什么意思
  • 事业单位人员租房有补助吗
  • 一般纳税人兼营不同税率
  • 预付卡没用完的可以退吗
  • 行政单位暂付款怎么记账
  • 劳动合同解除和终止的经济补偿
  • 劳保用品增值税税率是多少
  • 增值税普通发票怎么开
  • 其他综合收益影响递延所得税负债吗
  • 个税前几个月没有工资,累计减除费用会累计吗
  • 印花税走什么费用
  • 简易征收企业所得税几个点
  • 委托收款有哪些
  • 销售净利率计算公式是什么
  • 酒店预收款是什么意思
  • 长期待摊费用的内容和特征
  • 汇算清缴时
  • 企业贷款的利息都是固定的吗
  • 公司租赁汽车
  • win10无internet怎么解决
  • qq上的时间和手机不一样怎么办
  • 一个公户从农业银行开户
  • 为离职员工代缴社保 论
  • 收到其他公司的投资款计入什么科目
  • 商品房买卖合同备案查询
  • 房地产企业开发成本结转
  • php pack
  • sbdrvdet.exe - sbdrvdet是什么进程 有什么用
  • 别人从我公司走账怎么做账务处理
  • 常用的前端大屏软件
  • 用vue做的登录界面
  • 北海道的鱼
  • 食堂维修费用计什么科目
  • vue思维导图怎么下载
  • three.js 入门
  • 为什么会有不同的人种
  • 利息进项税是否含增值税
  • 金蝶现金流量表不对怎么处理
  • 企业增值税申报流程
  • phpcms验证码不显示
  • 主营业务收入含义
  • 固定资产折旧范围口诀
  • 用于职工福利的固定资产折旧
  • 代开专票的个税减免吗?
  • 小企业会计准则主要按照什么计量
  • 下列支出计入销售费用账户借方的是
  • 个体工商户纳税申抿
  • 字符串合并函数
  • PostgreSQL教程(七):函数和操作符详解(3)
  • 个体小企业怎么缴纳个人所得税
  • 结转本年利润要算期初余额吗
  • 用友财务软件的核心模块是什么
  • 检测费可以抵扣吗
  • 电子商业承兑会不会拿不到钱
  • 经济补偿金如何做账
  • 增值税专用发票开票压线了可以吗
  • 库存商品账务没做如何调增
  • mysql性能比较
  • windows 11安全模式
  • fp3是什么文件格式
  • 虚拟机打不开linux
  • win8怎么设置时间自动更新
  • win7移动软件
  • oracle创建emp表
  • 仿客齐集首页导航条DIV+CSS+JS [代码实例]
  • python的dict类型
  • javascript的原型,原型链,有什么特点?
  • jsp生成uuid
  • win10下载杀毒软件
  • unity3d怎么用
  • jquery easyui validatebox remote的使用详解
  • c#中init
  • js动态生成html页面
  • python中的整数
  • 养老待遇核定表在哪办理
  • 水电费加1
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设