记一次MySQL死锁
记录一次MySQL表无法访问
在一次真实的开发测试中突然发现数据库中订单表 select、update、delete 没有丝毫反应。以为是服务器性能过低导致MySQL进程执行过慢,但是等待10分钟订单表依然毫无反应,更奇怪的是其他表都可正常操作数据。这时我觉得是订单表坏了,想把订单表drop 掉 ,一样无果。玄学!
排查
1.与同事交流之中,得知他刚刚在订单表之中增加一个字段之后 MySQL客户端就一直卡住。他直接强制关闭MySQL连接客户端 , 之后订单表无法使用。
2.执行下面命令之后,发现是订单表死锁,导致的问题
SHOW OPEN TABLES WHERE IN_USE > 0;
3.查询死锁的进程
SHOW PROCESSLIST
4.杀掉死锁进程ID
KILL ID
法二
1.查看锁事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
2.杀掉死锁进程ID
KILL ID
MySQL死锁条件
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之
一不满足,就不会发生死锁。
此时此刻,非我莫属
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)