我们在误操作mysql后,会show processlist,把不想执行的进程给kill掉,但发现总是kill不掉。现在解释下原理
当mysql kill 掉 query thread的时候,做了两件事
1,把被kill的语句运行状态置为THD::KILL_QUERY
2,给该语句的执行线程发一个信号,让该线程退出等待
3,ctrl+c是不会结束线程的
4,一个线程已经被kill,再次show processlist的时候仍存在的原因是:等待线程每10毫秒判断一次是否可以进入INNODB执行
如果不行则继续休眠,当该线程被设置成了KILL_QUERY状态,但该线程在循环中,并没有去判断线程当前的状态,因此不会被进入
终止业务逻辑阶段。
只有在满足进入INNODB执行后,才会进入逻辑终止阶段。停止执行。
kill掉mysql一个进程时,该线程仍会存在的答案
最新推荐文章于 2022-09-20 18:20:41 发布