手动杀死了mysql 查询进程 在查询 就查不出来了

2 02 3 年,我的朋友在使用MySQL时遇到了一个难题。
他手动杀死了某个查询进程,但奇怪的是他无法使用SHOWPROCESSLIST或SHOWFULLPROCESSLIST命令查询该进程的信息。

他说这是因为进程被杀死并且他的连接被关闭。
这两个命令只显示正在运行的线程,所以关闭的进程自然不会显示。

他还提到,如果停止进程后锁没有释放,比如回滚一个大事务没有完成,可以通过以下命令查询该事务并锁定信息:
显示当前运行的事务:SELECT FROM INFORMATION_SCHEMA.INNODB_TRX,可以获取事务ID、事务开始时间、事务状态等。

显示锁等待关系:SELECT FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS,可以获取锁等待关系:SELECT FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS,可以查出哪些事务正在等待哪些锁,以及等待的锁类型等信息。

显示锁信息:MySQL8 .0之前可以使用SELECT FROM INFORMATION_SCHEMA.INNODB_LOCKS。
但在MySQL8 .0中该表已被删除,需要通过performance_schema进行查询。

此外,他还提到使用SHOWENGINE INNODBSTATUS命令可以生成详细的锁和事务诊断信息。
该命令将显示 InnoDB 中的所有当前状态数据,包括有关活动事务的信息。

他还提到,要确认该过程是否真正完成,可以检查 SHOWENGINE INNODBSTATUS 命令的 TRANSACTION 部分中是否存在与线程 ID 匹配的活动事务。
如果不存在,则进程实际上终止。

他说这个操作相当复杂,但是了解这些信息对于数据库维护非常重要。
听了他的描述,我觉得很有帮助,并提醒他谨慎操作。
他表示,下次遇到类似问题时,他就会知道如何解决。
算了,你懂的。

如何在MySQL中准确地Kill掉进程mysql中kill进程

嘿,让我告诉你我用 MySQL 做了什么。
两年前,我在北京,公司的数据库突然变得很慢。
当我检查时,有超过 3 00 个进程挂在那里。
我到现在也不知道该怎么办,所以就查了资料。

后来我师父教我,是这样做的。
首先检查进程,输入命令SHOW PROCESSLIST。
哦,名单很长。
您需要一一查看它们,看看哪些进程是僵尸进程,哪些进程正在花费时间。
我记得有一个ID为5 6 7 的进程。
它已经卡在那儿快一天了。
它睡觉,什么也不做。
就挂吧。

此时,你不能只杀掉5 6 7 就是这样。
如果我不小心杀了人怎么办?上次我差点杀死了一个正在更新数百条数据的进程。
幸好我们反应快,不然数据就乱了。
因此,您应该先检查一下。
您可以查看该进程位于哪些库中、它执行什么操作以及花费了多长时间。
如果确认没有帮助,请按 KILL 5 6 7 另外。

如果进程卡住等待表锁,则无法强制终止它。
这取决于。
在某些情况下,锁被另一个事务锁定,您必须等待它被释放或手动释放锁。
我去年在上海就遇到过这种情况。
数据导入过程卡住了3 个小时。
最后,我发现该表被另一个报表查询锁定,释放锁解决了问题。

最麻烦的就是杀戮状态。
这意味着 MySQL 正准备关闭它。
再次KILL可能会引起问题。
这时候你需要等待它自然完成。
不要强迫它。
我记得有一次杀死一个处于Killing状态的进程。
结果数据库摇摇欲坠,有的表数据不正确,我都出了一身冷汗。

所以杀死进程时要小心。
在继续之前,请先仔细查看并确保其正确。
不知道的不要乱猜,问师傅或者查说明书。
别像我一样。
我掉下的所有陷阱都是人们花钱来教训我的。