久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

MySQL kill指令使用指南

瀏覽:2日期:2023-10-07 12:48:40

KILL [CONNECTION | QUERY] processlist_id

在Mysql中每個連接都是單獨線程運行,可以使用語句 KILL processlist_id statement.來終止語句執行。

KILL允許可選 CONNECTION或QUERY 修飾符:

KILL CONNECTION ,KILL與無修飾符相同 :終止與給定關聯的連接 processlist_id,在終止該連接正在執行的任何語句之后。 KILL QUERY終止連接當前正在執行的語句,但保持連接本身不變。

使用show processlist 查看所有id

MySQL kill指令使用指南

Kill 指令使用

如果我們應用執行SQL后,由于鎖select for update或者數量太大,導致執行SQL卡在數據庫,此時想取消該SQL怎么辦?可以通過kill命令停止mysql線程或者是取消該SQL執行,此處需要到底是執行 kill threadId指令還是 kill query theadId指令?

kill與kill query 最大區別是是否取消該連接上執行的所有sql,即是否關閉該線程,如果關閉該線程即對應JDBC中statement關閉

-- 數據庫鎖住acctno=13記錄 然后執行如下更新語句update test set acctname =’12’ where acctno=13

show processlist查看正在執行sql的線程id

MySQL kill指令使用指南

如果想取消該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,很強大。

MySQL kill指令使用指南

是kill 指令,對應的線程ID為407,也有部分工具是發送的kill query指令。

以上就是MySQL kill指令使用指南的詳細內容,更多關于MySQL kill指令的資料請關注好吧啦網其它相關文章!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 私人毛片免费高清视频 | 国产一级特黄aaa大片 | 伊人免费视频二 | 三级在线观看 | 91成人在线看 | 一级毛片在线播放 | 国产精品日韩欧美一区二区三区 | 黄色免费高清视频 | 国产亚洲一区二区精品 | 日本成人小视频 | 97av在线视频| 欧美中文在线 | 欧美一级片 | 久久国产精品一区二区 | 一区二区三区在线视频播放 | 午夜精品福利在线观看 | 国产女人免费看a级丨片 | 国产三级黄色毛片 | 午夜精品久久久久久久男人的天堂 | 国产在线中文字幕 | 成人精品在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 国产成人精品999在线观看 | 在线观看视频一区 | www国产亚洲精品久久网站 | 国产精品久久久久久久久久久久 | 久久在线视频 | 日韩大片一区 | 日韩久久久久久久久久久 | 免费看的av | 日本久久久久 | 91视在线国内在线播放酒店 | 在线免费视频一区 | 国产婷婷在线视频 | 青青草av| 不卡日韩在线 | www.日韩.com | 国产精品视频播放 | 天天操天天舔天天爽 | 国产精品成人av | 老司机深夜福利在线观看 |