极乐门资源网 Design By www.ioogu.com
KILL [CONNECTION | QUERY] processlist_id
在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终止语句执行。
KILL允许可选 CONNECTION或QUERY 修饰符:
- KILL CONNECTION ,KILL与无修饰符相同 :终止与给定关联的连接 processlist_id,在终止该连接正在执行的任何语句之后。
- KILL QUERY终止连接当前正在执行的语句,但保持连接本身不变。
使用show processlist 查看所有id
Kill 指令使用
如果我们应用执行SQL后,由于锁select for update或者数量太大,导致执行SQL卡在数据库,此时想取消该SQL怎么办"htmlcode">
-- 数据库锁住acctno=13记录 然后执行如下更新语句 update test set acctname ='12' where acctno=13
show processlist查看正在执行sql的线程id
如果想取消该SQL执行,可以使用命令 kill query 407 取消SQL执行,执行后407线程并不会消失,如果该连接上有SQL执行会继续执行;但是如果使用kill 407 ,407线程会消失。使用时需要注意二者差异。
线程id除了通过show processlist查看,也可以使用编程的方式获取threadId
Connection connection = getConnection(); ((MysqlConnection)connection).getSession().getThreadId();
Statement cancel方法
我们使用JDBC编程方式对数据库进行操作时,可以也可以使用Statement对象的cancel方法进行取消,Mysql驱动内部也是发送Kill query threadId 指令,Mysql驱动cancel方法源码
public void cancel() throws SQLException { try { if (this.query.getStatementExecuting().get()) { if (!this.isClosed && this.connection != null) { JdbcConnection cancelConn = null; Object cancelStmt = null; try { HostInfo hostInfo = this.session.getHostInfo(); String database = hostInfo.getDatabase(); String user = StringUtils.isNullOrEmpty(hostInfo.getUser()) "" : hostInfo.getUser(); String password = StringUtils.isNullOrEmpty(hostInfo.getPassword()) "" : hostInfo.getPassword(); NativeSession newSession = new NativeSession(this.session.getHostInfo(), this.session.getPropertySet()); newSession.connect(hostInfo, user, password, database, 30000, new TransactionEventHandler() { public void transactionCompleted() { } public void transactionBegun() { } }); //驱动内部使用 KILL QUERY + threadId 指令取消 newSession.sendCommand((new NativeMessageBuilder()).buildComQuery(newSession.getSharedSendPacket(), "KILL QUERY " + this.session.getThreadId()), false, 0); this.setCancelStatus(CancelStatus.CANCELED_BY_USER); } catch (IOException var13) { throw SQLExceptionsMapping.translateException(var13, this.exceptionInterceptor); } finally { if (cancelStmt != null) { ((Statement)cancelStmt).close(); } if (cancelConn != null) { ((JdbcConnection)cancelConn).close(); } } } } } catch (CJException var15) { throw SQLExceptionsMapping.translateException(var15, this.getExceptionInterceptor()); } }
客户端工具执行
客户端工具执行SQL后取消执行,有些工具发 kill 命令 有些发kill query 指令,可以通过抓包工具验证下Navicat工具发送什么指令,抓包工具推荐Wireshark,很强大。
是kill 指令,对应的线程ID为407,也有部分工具是发送的kill query指令。
以上就是MySQL kill指令使用指南的详细内容,更多关于MySQL kill指令的资料请关注其它相关文章!
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无MySQL kill指令使用指南的评论...
更新日志
2024年12月23日
2024年12月23日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]