当前位置: 首页 > news >正文

MySQL死锁场景与应对方案

什么是死锁

死锁是指两个或多个事务在同一资源上相互占用,并请求锁定对方的资源,从而导致恶性循环的现象

死锁产生原因

互斥性 请求和保持条件 不剥夺 循环等待

详情可以阅读此文章:什么是死锁?死锁如何解决?-CSDN博客


上面科普博客看完,相信对死锁这个名词有一定的认识了,那么MySQL中有哪些场景会出现死锁呢?

MySQL死锁场景

1. SQL走了不同的二级索引,然后回表时发现自己想要的主键被其他事务上锁了,但是自己又持有对方想要的主键,多出现于表有几个二级索引,且都需要进行上锁操作

        解决方法:做设计的时候首先尽可能避免出现很多二级联合索引,其次代码端也要尽可能根据相同的二级索引的字段去加锁,回表性能会差一些,尽可能根据主键来操作,避免踩雷,虽然MySQL有提供死锁检测功能

2. 事务还未提交,锁的资源未释放,在事务内新开事务去进行修改

        解决方法:这个是纯代码端的问题了,需要根据具体代码做出调整


MySQL死锁问题如何排查和解决

下面有两篇MySQL出现死锁排查思路和方法的博客可以阅读阅读

https://zhuanlan.zhihu.com/p/245556254

https://mp.weixin.qq.com/s/II-rDjXRDnR2jzxbXI_3zg

相关文章:

  • 51单片机中断
  • java大数据hadoop2.9.2 Linux安装mariadb和hive
  • Baichuan2百川模型部署的bug汇总
  • OpenCV-Python(49):图像去噪
  • MySQL存储过程和触发器
  • Windows高级调试(学习笔记)-第二章-调试器介绍
  • 基于JavaWeb+SSM+Vue停车场微信小程序系统的设计和实现
  • ChatGLM vs ChatGPT
  • SPI 动态服务发现机制
  • Docker(八)高级网络配置
  • C语言:函数指针的使用
  • GPT应用开发:编写插件获取实时天气信息
  • (南京观海微电子)——COF介绍
  • 计算机服务器中了mallox勒索病毒怎么办,mallox勒索病毒解密数据恢复
  • K8S-容器运行时(v1.27)
  • @jsonView过滤属性
  • css的样式优先级
  • Django 博客开发教程 8 - 博客文章详情页
  • Gradle 5.0 正式版发布
  • HTTP 简介
  • HTTP那些事
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript函数式编程(一)
  • JavaScript实现分页效果
  • JavaScript学习总结——原型
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Python打包系统简单入门
  • Twitter赢在开放,三年创造奇迹
  • Wamp集成环境 添加PHP的新版本
  • zookeeper系列(七)实战分布式命名服务
  • 闭包,sync使用细节
  • 基于 Babel 的 npm 包最小化设置
  • 开源地图数据可视化库——mapnik
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端技术周刊 2019-02-11 Serverless
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 试着探索高并发下的系统架构面貌
  • 优秀架构师必须掌握的架构思维
  • #WEB前端(HTML属性)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (day6) 319. 灯泡开关
  • (LeetCode) T14. Longest Common Prefix
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (ZT)一个美国文科博士的YardLife
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (新)网络工程师考点串讲与真题详解
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .aanva
  • .NET 服务 ServiceController
  • .NET 使用配置文件
  • .NET单元测试