位置: 编程技术 - 正文

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

  • 车船税税金及附加计入管理费用嘛
  • 所得税清缴时有哪些调整项
  • 印花税计提时应入什么科目
  • 建筑发票开具与土增税扣有什么关系?
  • 累计折旧 计提折旧
  • 生产成本和制造费用的账务处理
  • 本期准予抵减税额怎么算
  • 车间购买灯会计怎么做账
  • 建筑企业应交哪几种税
  • 员工全额承担社保账务怎么做?
  • 房地产公司土地价款抵扣的账务处理
  • 企业名称变更需要重新核名吗
  • 季节性停用的设备应计提折旧吗
  • 接受捐赠收入会计利润含税吗
  • 嵌入式软件产品增值税即征即退
  • 一般纳税人如何零申报
  • 新会计准则税金及附加
  • 沥青混凝土增值税风险
  • 房产税计税依据房产原值怎么算
  • 物业维修收费合理吗
  • 企业所得税减免所得税额怎么算
  • 残保金的工资总额是应发还是实发
  • 拆迁公司属于什么性质
  • 个人出租住房如何倒算开票金额
  • 属于外来凭证的单据是
  • 收购股权公司
  • 注册中的商标转让
  • 收到利息收入会计分录怎么写
  • 破产清算应付账款
  • macbookzen
  • 651错误是怎么回事
  • 付款交单和承兑交单对卖方来说都有一定风险
  • win11测试版和正式版区别
  • hypertrm.exe系统错误
  • 电脑找不到Realtek
  • 鼠标按键多有用吗
  • 无偿划转长期股权投资
  • 企业弥补亏损明细表
  • 关于扩展检索,下列说法正确的是
  • Uniapp使用$base方法
  • 如何在你的电脑上截图
  • 小额贷款企业收利息吗
  • 免抵退税帐务处理
  • javaweb学生信息管理系统idea
  • win11装双系统虚拟机mac
  • 前端es2020
  • 稿费演出费等劳务收入算工资吗
  • 公司给员工租房进项税可以抵扣吗
  • 培训费发票是否含税
  • 生产成本明细账t型账
  • 空调维修费入办公费还是修理费
  • 小规模纳税人认定标准500万
  • 亏损做t计算方法
  • 公司注销怎么做
  • 企业代扣代缴哪些费用
  • 两个公司的出纳怎么分账
  • 费用摊销怎么做分录
  • 手工账明细账怎么登记
  • 银行回单借贷标志贷表示什么
  • 收到发票税点计入什么科目
  • 暂估入账后续处理
  • 64位win7旗舰版右下角音量小喇叭图标不见了怎么找回?
  • 怎么防止win10
  • xp系统好怪哦
  • windows7调制解调器在在哪里打开
  • win8.1检测不到更新
  • win8本地账户
  • linux条件判断
  • 怎么判断进程是否存在
  • windows 10 开始菜单
  • 最新版win10版本号
  • cocos2dx4.0入门
  • 环境篇心中有光的作文
  • python让用户选择
  • 安卓退出界面
  • 文章标题的作用有哪些?
  • 安徽税务网上申报领取发票
  • 企业所得税改革
  • 达州房管局备案查询系统
  • 宝鸡二套房契税多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设