成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),廣南網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:廣南等地區(qū)。廣南做網(wǎng)站價(jià)格咨詢:18980820575
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指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用

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

kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用

如果想取消該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());
    }
  }

客戶端工具執(zhí)行

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

kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用

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

上述就是小編為大家分享的kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文題目:kill指令怎么正確的在MySQL數(shù)據(jù)庫(kù)中使用-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://jinyejixie.com/article44/jgiee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)標(biāo)簽優(yōu)化、定制開(kāi)發(fā)、App設(shè)計(jì)商城網(wǎng)站、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
太康县| 芜湖市| 泾源县| 朝阳区| 牡丹江市| 黄龙县| 天门市| 苏州市| 宣化县| 南木林县| 安塞县| 蛟河市| 汉川市| 乌苏市| 蚌埠市| 化州市| 屯留县| 五大连池市| 金溪县| 庆阳市| 崇文区| 铁岭市| 嵩明县| 磐石市| 敦化市| 万州区| 江陵县| 金沙县| 湖南省| 岚皋县| 中方县| 禹城市| 临清市| 平遥县| 松潘县| 株洲县| 苏尼特右旗| 吉安市| 涞水县| 临邑县| 达日县|