位置: 编程技术 - 正文

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

  • 城建税要减进项税吗
  • 什么是价外税价外税有哪些
  • 建筑业总产值含税吗百度百科
  • 增值税留抵税务处理办法
  • 实际缴纳所得税时应借记什么账户
  • 普通发票有没有有效期
  • 行政单位的会计要素
  • 当月未认证发票分录
  • 营改增后劳务公司账务处理
  • 非流动资产基金是什么意思
  • 财务报表季度申报资产负债表怎么填
  • 未分配利润期末余额怎么算出来
  • 已认证抵扣的进项税额转出做账的会计处理
  • 买手机5000预算
  • 2021最新版静疗规范指南
  • 利率和利息的区别白话
  • 如何打开mac系统
  • 光纤测速网速测试
  • 商标申报费用会退回来吗
  • 如何在windows10搜索文件
  • 如何在电子税务局添加开票人
  • php怎么自学
  • 购进的货物
  • linux init3
  • 单反镜头直径越大是不是就越好
  • 驼鹿穿过莫兰山了吗
  • tepac接口
  • 新的担保法是怎么规定的
  • 移动端适配 px
  • open是什么含义
  • 自然人税收管理系统
  • 使用spring可以实现声明式事务吗
  • 将本月发生的制造费用总额按生产工人
  • 土地出让与土地划拨有什么区别
  • mongodb从入门到商业实战
  • mongodb项目使用说明
  • sqlserver数据库和mysql区别
  • db2 -968
  • 酒店收入是什么收入
  • 金税四期对企业纳税管理影响分析
  • 工程结算收入如何确定
  • 一般纳税人开劳务发票税率
  • 销售明细账本怎么填写
  • 为取得固定资产而发生的什么支出可计入固定资产成本
  • 外币账户记账方法
  • 核销贷款收回账务怎么做
  • 预提短期借款利息的会计科目
  • 营业外收入在汇算清缴里填哪张表
  • 挂靠被查出来后挂靠费怎么处理?
  • 收购分公司有什么要求
  • 付款与开票单位不一致怎样做账
  • 注册公司好麻烦
  • 会计记账科目表
  • mysql很卡
  • macos怎么切换桌面
  • freebsd书籍
  • 在microsoft store
  • debian修改中文
  • linux中more命令详解
  • ubuntu16.04远程连接
  • spybuddy.exe - spybuddy是什么进程
  • Win10系统照片应该打不开
  • 无法登录所请求的数据库 用户sa登录失败
  • 解决安装后软件icon一圈白边问题
  • android线程间通信的几种方法
  • linux系统下hosts文件详解及配置
  • 游戏开发主要学什么
  • js文件里面有什么
  • eclipse从本地导入项目
  • android app 开发框架
  • 浏览器复制插件在哪
  • 安卓开发框架mvvm
  • python中的字符型
  • js调用url接口
  • javascript基础编程
  • Python的装饰器用法学习笔记
  • 云南省税务局咨询电话
  • 契税完税证明怎么补打
  • 税务文书有哪些
  • ssr服务器地址端口密码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设