mysql手动中断source命令的执行
https://blog.csdn.net/Alan1921/article/details/114364512
问题 在mysql命令行 对一个sql文件执行了source命令,把sql文件的数据导入mysql。 因导入数据前,忘记把autocommit 关闭,导致导入较慢,因此需中断source 命令的运行。 计划 先找到source 对应的进程,然后kill
奇怪的一幕发生了,show processlist 里面没有对应的 进程 不指定用户名,再次执行 show processlist , 依然没有对应的进程,这可怎么kill ,找不到对应线程。。。
然后,开始网上到处搜解决方案,查看了几十个网页,唯一找到的办法就是重启mysql
问了开发,开发说不能重启数据库。。。
解决办法 突然一个想法冒了出来,执行source 命令的窗口 如果断开和 mysql 的连接,会不会终止数据的导入呢?
那就试试! 我用的是 secureCRT 连接的mysql , 点击断开连接后,我在另外一个窗口查询source导入数据对应的表的数据量,数据量不再增长了! 不像刚才,source 导入数据 执行的时候,表的数据量是不断增加的,现在数据量不变了,说明source 导入操作停止了! 大功告成!
mysql查看当前执行线程_关闭当前的某些线程 show processlist_kill
每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。
如果您拥有SUPER权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。
您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。
1、SHOW PROCESSLIST 2、kill 6 3、再次show processlist,可看到下图效果: 在多数情况下,线程终止可能要花一些时间,这是因为终止标记只会在在特定的间隔被检查;
线程正在释放资源,过会儿才真正的死掉了。
|