亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL kill指令使用指南

 更新時(shí)間:2020年12月28日 09:41:36   作者:掘金小勇士  
這篇文章主要介紹了MySQL kill指令的使用方法,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
KILL [CONNECTION | QUERY] processlist_id

在Mysql中每個(gè)連接都是單獨(dú)線程運(yùn)行,可以使用語(yǔ)句 KILL processlist_id statement.來(lái)終止語(yǔ)句執(zhí)行。

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

  • KILL CONNECTION ,KILL與無(wú)修飾符相同 :終止與給定關(guān)聯(lián)的連接 processlist_id,在終止該連接正在執(zhí)行的任何語(yǔ)句之后。
  • KILL QUERY終止連接當(dāng)前正在執(zhí)行的語(yǔ)句,但保持連接本身不變。

使用show processlist 查看所有id

Kill 指令使用

如果我們應(yīng)用執(zhí)行SQL后,由于鎖select for update或者數(shù)量太大,導(dǎo)致執(zhí)行SQL卡在數(shù)據(jù)庫(kù),此時(shí)想取消該SQL怎么辦?可以通過(guò)kill命令停止mysql線程或者是取消該SQL執(zhí)行,此處需要到底是執(zhí)行 kill threadId指令還是 kill query theadId指令?

kill與kill query 最大區(qū)別是是否取消該連接上執(zhí)行的所有sql,即是否關(guān)閉該線程,如果關(guān)閉該線程即對(duì)應(yīng)JDBC中statement關(guān)閉

-- 數(shù)據(jù)庫(kù)鎖住acctno=13記錄 然后執(zhí)行如下更新語(yǔ)句
update test set acctname ='12' where acctno=13

show processlist查看正在執(zhí)行sql的線程id

如果想取消該SQL執(zhí)行,可以使用命令 kill query 407 取消SQL執(zhí)行,執(zhí)行后407線程并不會(huì)消失,如果該連接上有SQL執(zhí)行會(huì)繼續(xù)執(zhí)行;但是如果使用kill 407 ,407線程會(huì)消失。使用時(shí)需要注意二者差異。

線程id除了通過(guò)show processlist查看,也可以使用編程的方式獲取threadId

 Connection connection = getConnection();
 ((MysqlConnection)connection).getSession().getThreadId();

Statement cancel方法

我們使用JDBC編程方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí),可以也可以使用Statement對(duì)象的cancel方法進(jìn)行取消,Mysql驅(qū)動(dòng)內(nèi)部也是發(fā)送Kill query threadId 指令,Mysql驅(qū)動(dòng)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() {
              }
            });
            //驅(qū)動(dòng)內(nèi)部使用 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());
    }
  }

客戶(hù)端工具執(zhí)行

客戶(hù)端工具執(zhí)行SQL后取消執(zhí)行,有些工具發(fā) kill 命令 有些發(fā)kill query 指令,可以通過(guò)抓包工具驗(yàn)證下Navicat工具發(fā)送什么指令,抓包工具推薦Wireshark,很強(qiáng)大。

是kill 指令,對(duì)應(yīng)的線程ID為407,也有部分工具是發(fā)送的kill query指令。

以上就是MySQL kill指令使用指南的詳細(xì)內(nèi)容,更多關(guān)于MySQL kill指令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解析MySQL索引的作用

    解析MySQL索引的作用

    這篇文章主要為大家詳細(xì)介紹了MySQL索引的作用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法

    MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法

    在SQL語(yǔ)法中我們首先使用CASE關(guān)鍵字開(kāi)頭,然后根據(jù)不同的條件使用WHEN關(guān)鍵字,并在每個(gè)條件后面指定結(jié)果,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法,需要的朋友可以參考下
    2023-12-12
  • MySQL中關(guān)于case when的用法

    MySQL中關(guān)于case when的用法

    這篇文章主要介紹了MySQL中關(guān)于case when的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • MySQL中查詢(xún)字段為空或者為null的方法

    MySQL中查詢(xún)字段為空或者為null的方法

    這篇文章主要介紹了MySQL中查詢(xún)字段為空或者為null的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 你知道m(xù)ysql中空值和null值的區(qū)別嗎

    你知道m(xù)ysql中空值和null值的區(qū)別嗎

    這篇文章主要給大家介紹了關(guān)于mysql中空值和null值區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • MySQL存儲(chǔ)引擎簡(jiǎn)介及MyISAM和InnoDB的區(qū)別

    MySQL存儲(chǔ)引擎簡(jiǎn)介及MyISAM和InnoDB的區(qū)別

    這篇文章主要介紹了MySQL存儲(chǔ)引擎簡(jiǎn)介及MyISAM和InnoDB的區(qū)別,重點(diǎn)介紹了MyISAM 和 InnoDB的區(qū)別,需要的朋友可以參考下
    2014-05-05
  • MySQL深分頁(yè)問(wèn)題解決的實(shí)戰(zhàn)記錄

    MySQL深分頁(yè)問(wèn)題解決的實(shí)戰(zhàn)記錄

    優(yōu)化項(xiàng)目代碼過(guò)程中發(fā)現(xiàn)一個(gè)千萬(wàn)級(jí)數(shù)據(jù)深分頁(yè)問(wèn)題,覺(jué)著有必要給大家總結(jié)整理下,這篇文章主要給大家介紹了關(guān)于解決MySQL深分頁(yè)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • MySQL按天分組統(tǒng)計(jì)一定時(shí)間內(nèi)的數(shù)據(jù)實(shí)例(沒(méi)有數(shù)據(jù)補(bǔ)0)

    MySQL按天分組統(tǒng)計(jì)一定時(shí)間內(nèi)的數(shù)據(jù)實(shí)例(沒(méi)有數(shù)據(jù)補(bǔ)0)

    我們?cè)谟肕ysql制作數(shù)據(jù)可視化圖表時(shí)候,經(jīng)常需要按照天對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于MySQL按天分組統(tǒng)計(jì)一定時(shí)間內(nèi)的數(shù)據(jù),沒(méi)有數(shù)據(jù)補(bǔ)0的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • MySQL如何插入Emoji表情

    MySQL如何插入Emoji表情

    這篇文章主要介紹了MySQL如何插入Emoji表情,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • Linux centos7環(huán)境下MySQL安裝教程

    Linux centos7環(huán)境下MySQL安裝教程

    這篇文章主要為大家詳細(xì)介紹了Linux centos7環(huán)境下MySQL安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論