mysql 未提交事务进程ID(trs_mysql_thread_id) kill 不掉?

发布于 2022-09-11 18:29:06 字数 867 浏览 37 评论 0


---- 一更 ----

1. 问题原因已找到
2. 更改标题.

原因并不是线程ID杀不死, 而是, 它正在使劲回滚. 由于delete的数据量很大, 撤销后, 回滚需要多几倍的时间. 过了一晚上, 第二天, 查看时, 已经没有 未提交的事务 了.


原问题

起因时mysql磁盘爆了, 于是删除大表.
不知道怎搞的, 执行了delete * from 表. 结果崩了...

用的navicat视图工具, navicat界面崩溃, 于是强关.
重启后, 怎么删除都是崩溃.

已做的工作

首先, 根据网上资料, show processlist 查看statewaiting for table metadata lock 的任务, 然后kill掉.
但是, 但是, 之后一旦执行删除, 依然是 waiting for table metadata lock.

clipboard.png

然后, 查询 未提交的事务: select * from information_schema.innodb_trx
但是, 但是, 发现怎么kill都kill不了, 一查, 还是存在...
clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷路的信 2022-09-18 18:29:06

大表不能这样删, 因为中断后 Rolling back 也要很多时间的.
要么用 truncate table tablename;
要么加 limit 每次删一小部分, 保证在删的过程中的基本可用性.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文