MySQL在接收到kill命令后,会先检查线程状态,然后设置killed标志并关闭socket连接,最后通过信号量唤醒其他等待线程。这个过程可能导致线程在killed状态停留一段时间。分析长时间处于killed状态的原因:回滚操作:如果线程正在执行大事务或清理临时表等操作,这些回滚操作可能导致线程长时间处于等待状态。机器负载:...
1)执行kill命令的线程发起kill - 线程关闭socket连接并中断引擎等待,同时设置thd-killed状态以防止影响下一次请求。2)被kill线程响应kill命令 - 被kill线程通过检查thd-killed状态或接收信号量来感知kill命令。3)connection真正被kill掉 - 当thd_connection_alive状态为待杀死时,连接将被关闭,释放资源。
MySQL中使用kill命令去杀死连接时,线程可能长时间处于killed状态。这种现象通常发生在命令执行流程中,从MySQL的启动入口函数main到线程绑定和处理客户端消息。当执行kill命令并找到需要kill掉的连接的conncetion_id时,发送kill命令后,线程会先设置killed flag状态,接着关闭socket连接并中断引擎等待。之后,...