我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL kill指令使用指南

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL kill指令使用指南


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怎么办?可以通过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

如果想取消该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指令的资料请关注自学编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL kill指令使用指南

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL kill指令使用指南

KILL [CONNECTION | QUERY] processlist_id在Mysql中每个连接都是单独线程运行,可以使用语句 KILL processlist_id statement.来终止语句执行。 KILL允许可选 CONNE
2022-05-19

详解MySQL kill 指令的执行原理

kill 指令有两种写法 " kill query + 线程 id "、" kill connection(可缺省) + 线程 id "。分别表示关闭指定线程正在执行的语句、断开指定线程连接的客户端(如果有正在执行的操作会先停止执行的操作再
2022-05-27

MySQL中kill 指令的执行原理是什么

这篇文章将为大家详细讲解有关MySQL中kill 指令的执行原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Kill 指令执行原理指令执行特点1、 一个语句执行过程中有多处 " 埋点
2023-06-08

MySQL 全文索引使用指南

全文索引需要特殊的查询语法。有没有索引都可以进行全文检索,但是存在索引时会提高匹配的速度。全文索引的索引通过特殊的结构存储以便于找到文档中包含搜索关键字对应的内容。在我们日常生活中,最常见的全文检索就是网络搜索引擎。虽然,网络搜索引擎的数据
2022-05-14

FlexBuilder3使用指南

FlexBuilder3是一款用于构建Flex应用程序的集成开发环境(IDE),以下是一份FlexBuilder3的使用指南:1. 安装FlexBuilder3:从Adobe官网下载FlexBuilder3,并按照安装向导进行安装。2. 创
2023-09-05

Pysvn使用指南

本文主要介绍了Pysvn使用指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-20

探究pip更新命令的使用指南

浅析pip更新命令的使用方法在Python开发中,pip是一个非常重要的工具,用于安装和管理第三方库。随着软件的不断发展和迭代,第三方库的版本也在不断更新,因此经常需要使用pip来更新已安装的库。本文将深入浅出地介绍pip更新命令的使用方
探究pip更新命令的使用指南
2024-01-16

cxGrid 使用指南 3

现在特将收集的一些文章与大家分享,也希望大家不要重蹈我的覆辙.    http://www.delphibbs.com/keylife/iblog_show.asp?xid=19911大富翁论坛-富翁笔记-cxgrid (数据库控件)控件
2023-01-31

MySQL Delete From指令怎么使用

MySQL的DELETE FROM指令用于从表中删除记录。其语法如下:```DELETE FROM table_nameWHERE condition;```- table_name:要删除记录的表名。- condition:可选参数,用于
2023-10-12

MySQL学习指南

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Managem
MySQL学习指南
2016-11-25

gitlab ci cd 命令的使用不完全指南

这篇文章主要为大家介绍了gitlab中ci和cd命令使用的不完全指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

Nokia Booklet 3G使用指南

在购买联通3G上网卡套餐之前,为了避免买来的usim卡不能使用,我特地先去nokia的booklet支持网站查了查帖子。结果发现有个捷克的兄弟从美国的Bestbuy买了机器,却不能用他的3G sim卡上网,因为3G modem被锁定了,只能
2023-01-31

Vue3<scriptsetuplang=“ts“>使用指南

这篇文章主要介绍了Vue3<scriptsetuplang=“ts“>使用指南,需要的朋友可以参考下
2022-12-08

Android中viewPager使用指南

viewPager是谷歌官方提供的一种方便实现页面滑动效果的控件,可以直接使用也可以和fragment联合使用。这里只简单说下直接使用。 使用viewPager的步骤如下: (1)在布局中放入viewPager的控件 (2)设置加载到v
2022-06-06

编程热搜

目录