位置: 编程技术 - 正文

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

  • 生产成本年末转入什么科目
  • 房地产印章图片
  • 信用减值损失与坏账准备关系
  • 什么公司不可以上市
  • 购货方收到红字发票
  • 混合经营销售额合并计算还是分开计算
  • 房租发票上税的分录怎么写?
  • 购物中心联营扣点
  • 缴纳印花税需要计提吗?
  • 现金存款账户
  • 今年补缴去年的税汇算清缴吗
  • 农业生产企业是指什么
  • 增值税发票含税不含税怎样调整
  • 暂估成本冲回之后成本变为负的
  • 中小企业固定资产管理存在的问题
  • 民办教育培训机构申请条件
  • 什么情况下的发烧才会全身酸痛呢
  • 选择简易征收可以开专票吗
  • 空白发票怎么用
  • 向境外分配股息怎样算税额
  • 企业所得税应纳税额的计算公式
  • 联想怎么进入bios设置u盘启动
  • 金蝶kis期初余额设置
  • mac如何连接2个airpods
  • Win10宽带无法连接
  • php函数返回值类型
  • 已抵扣的进项税额红冲的账怎么做
  • 期间费用转入本年利润
  • 固定资产增加应计入什么
  • laravel框架用到哪些设计模式
  • 用python编写
  • php中session使用
  • cpu占满gpu不工作
  • php判断文件是否存在的函数
  • 建筑业成本核算流程
  • wordpress图片模板
  • 税务自查报告范文自查报告怎么写
  • 社保基数是按基本工资还是应发工资
  • 自建厂房转固定资产如何办理手续
  • php网站首页的源码在哪里
  • 只开发票没有合同也要印花税吗
  • mysql proxy问题的解决方法
  • 房地产企业增值税预征率
  • 消防设备要多少钱
  • 合并财务报表为什么要抵消子公司所有者权益
  • 残保金计提比例
  • 领用材料什么会计科目
  • 备查账依据什么登记
  • 在sql中执行一个创建数据表的脚本文件
  • mybatis collection 多条件查询的实现方法
  • mysqlsum查询慢
  • 从mysql导出数据
  • Mysql主库死锁了导致从库停止复制
  • cmd shutdown命令
  • win10虚拟桌面版
  • win10自带的音乐播放器groove如何设置
  • Windows Server 2008网上邻居打开慢的解决
  • vnc server apk
  • mac重装macos
  • 电脑无法使用qq
  • win10一直弹werfault,程序也打不开
  • win8.1中文版
  • 虚拟机命令cd
  • win10系统升级后共享打印机不能用
  • node. js教程
  • shell win10
  • AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
  • linux百度网盘安装
  • 命令如下
  • python 文件头
  • dos 删除文件夹下所有文件
  • window.parent与window.openner区别介绍
  • jquery单击事件和双击事件
  • javascript类定义
  • 税务举报电话号码
  • 纳税信用等级C怎么调整
  • 云南省国家税务局网上办税服务厅
  • 宁波税务局网上办税服务厅
  • 地税局开的发票
  • 税务稽查审理的基本原则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设