mysql 未提交事务进程ID(trs_mysql_thread_id) kill 不掉?
---- 一更 ----
1. 问题原因已找到
2. 更改标题.
原因并不是线程ID杀不死, 而是, 它正在使劲回滚. 由于delete的数据量很大, 撤销后, 回滚需要多几倍的时间. 过了一晚上, 第二天, 查看时, 已经没有 未提交的事务 了.
原问题
起因时mysql磁盘爆了, 于是删除大表.
不知道怎搞的, 执行了delete * from 表
. 结果崩了...
用的navicat视图工具, navicat界面崩溃, 于是强关.
重启后, 怎么删除都是崩溃.
已做的工作
首先, 根据网上资料, show processlist
查看state
为 waiting for table metadata lock
的任务, 然后kill掉.
但是, 但是, 之后一旦执行删除, 依然是 waiting for table metadata lock
.
然后, 查询 未提交的事务: select * from information_schema.innodb_trx
但是, 但是, 发现怎么kill都kill不了, 一查, 还是存在...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
大表不能这样删, 因为中断后 Rolling back 也要很多时间的.
要么用
truncate table tablename
;要么加 limit 每次删一小部分, 保证在删的过程中的基本可用性.