记录一次Mysql死锁排查事件
2018-11-02 17:12
471 查看
Navicat 修改表 卡死 Mysql 死锁了
我:咔咔写代码,然后IDEA正在debug…这个时候,我的debug还没结束!
同事(大佬)过来我这边讨论表结构。
表示礼貌,我停下了手中的debug,跟他讨论了起来,经过许久的讨论,需要修改表(加几个字段)。
在同事的协助下,打开navicat,修改表
AAAA。加上了新增的字段,点击保存。就卡死了。
以为是navicat卡了,或者是电脑卡了。任务管理器关掉navicat,重新修改保存(还好字段不多QAQ)。咦??怎么又卡死了,鼠标一直转圈圈。
What?黑人问号???????
这个时候,意识到应该是mysql被锁死了!
那么,百度如何解除死锁:
得到下面的结果
解除Mysql正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程) show processlist 3.杀死进程id(就是上面命令的id列) kill id
navicat控制台执行
show processlist,发现确实有进程被锁了。我们心想kill掉这个进程就好了。
呵呵~杀掉了锁住的进程也没用。
突然,灵光一现,我在debug。这个方法里面,恰好就对表
AAAA进行了查询(query)操作,mysql是关系型数据库,代码里面加了事务。那么,在整个方法没有执行完之前,对这张表是加了锁的。这个时候,去修改这张表的字段,当然是不允许的!
结束debug,再修改表,就OK了。
最后,推荐读的一本书。
非常之六批的一本书 — 《深入理解计算机系统(原书第三版)》
有时间了一定要去浅读一下。
相关文章推荐
- 剖析:一次入侵Linux服务器的事件记录
- 记录一次***事件(redis 未授权漏洞利用直接登录服务器)
- 一次dblink和硬解析频繁导致服务堵塞的排查记录
- 记录一次linux线上服务器被黑事件
- 一次Mono解析Excel文档编码出错排查记录
- 记录一次对代码完全陌生的问题排查过程
- JVM成长之路,记录一次内存溢出导致频繁FGC的问题排查及解决
- 记录一次攻击事件(redis 未授权漏洞利用直接登录服务器) 推荐
- 记一次tomcat进程cpu占用过高的问题排查记录
- 一次关于Redis内存诡异增长的排查过程实战记录
- tcpdump抓包故障排查记录事件1
- 一次cgi服务卡死的问题排查记录
- 一次问题排查记录
- 记录一次linux线上服务器被黑事件
- 记录一次linux线上服务器被黑事件
- 记录一次网站邮箱(STMP)被恶意伪造事件
- 记录一次恶意软件排查
- 记录一次cpu 100%线上问题排查
- 记录一次Android交叉编译ffmpeg排查错误