Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下:
KILL [CONNECTION | QUERY] thread_id
每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。
KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。
如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有超级管理员权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。
首先登录MySQL,然后使用: show processlist; 查看当前mysql中各个线程状态。
mysql> show processlist; +------+------+----------------------+----------------+---------+-------+-----------+--------------------- | Id | User | Host | db | Command | Time | State | Info +------+------+----------------------+----------------+---------+-------+-----------+--------------------- | 7028 | root | ucap-devgroup:53396 | platform | Sleep | 19553 | | NULL | 8352 | root | ucap-devgroup:54794 | platform | Sleep | 4245 | | NULL | 8353 | root | ucap-devgroup:54795 | platform | Sleep | 3 | | NULL | 8358 | root | ucap-devgroup:62605 | platform | query | 4156 | updating | update t_shop set |
以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.
然后运行kill命令,命令格式如下:
kill id; - 示例: kill 8358
杀掉即可。
相关推荐
-
oracle查看执行最慢与查询次数最多的sql语句
前言 在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致.如果执行频繁的SQL,往往容易遭遇一些并发性的问题. 那么如何查看ORACLE数据库某个SQL的执行频率/次数呢? 下面来看看完整的示例代码. 一.查询执行最慢的sql select * from (select sa.SQL_TEXT, sa.SQL_FULLTEXT, sa.EXECUTIONS "执行次
-
MySql批量插入优化Sql执行效率实例详解
MySql批量插入优化Sql执行效率实例详解 itemcontractprice数量1万左右,每条itemcontractprice 插入5条日志. updateInsertSql.AppendFormat("UPDATE itemcontractprice AS p INNER JOIN foreigncurrency AS f ON p.ForeignCurrencyId = f.ContractPriceId SET p.RemainPrice = f.RemainPrice * {0},
-
Mysql 服务 1067 错误 的解决方法:修改mysql可执行文件路径
今天遇到mysql服务1067错误的问题,设置使用系统账户也无法启动mysql,后面认证看了系统的配置信息,发现启动文件也就是mysql安装路径是之前的(也说明之前安装mysql,没去卸载直接安装新的会出错),于是打算修改修改mysql可执行文件路径,换成现在的. 但是各种百度,都说的不明确,后面打算放弃了,干脆重装系统,才发现这个可以解决. 第一步:停止服务MySQL 第二步:(控制台:运行->regedit),根据路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont
-
SQL执行步骤的具体分析
SQL执行步骤的具体分析 先来看执行语句的顺序 (8)select (9)distinct A (1)from Ta (3)join Tb (2)on XXX (4)where XXX (5)group by XXX (6)with {cube|roll up} (7)having XXX (10)order by XXX (11)limit XXX 接着我们看一下具体分析查询处理的各个阶段: FROM 对from子句中的左表和右表执行笛卡尔集,产生虚拟表VT1 ON 对虚拟表VT1进行on
-
mybatis 插件: 打印 sql 及其执行时间实现方法
Plugins 摘一段来自MyBatis官方文档的文字. MyBatis允许你在某一点拦截已映射语句执行的调用.默认情况下,MyBatis允许使用插件来拦截方法调用: Executor(update.query.flushStatements.commint.rollback.getTransaction.close.isClosed) ParameterHandler(getParameterObject.setParameters) ResultSetHandler(handleResult
-
PHP实现mysqli批量执行多条语句的方法示例
本文实例讲述了PHP实现mysqli批量执行多条语句的方法.分享给大家供大家参考,具体如下: 可以一次性的执行多个操作或取回多个结果集. 实例: <?php $mysqli = new mysqli("localhost", "root", "111111", "test"); /* check connection */ if (mysqli_connect_errno()) { printf("Connec
-
SQL SERVER 中构建执行动态SQL语句的方法
1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数据库名之类作为变量时,必须用动态SQL declare @fname varchar(20) set @fname = 'FiledName' --Select @fname from tableName
-
用非动态SQL Server SQL语句来对动态查询进行执行
此文章主要向大家讲述的是非动态SQL ServerSQL语句执行动态查询,在实际操作中我尝试在一个存储过程中,来进行传递一系列以逗号划定界限的值,来对结果集进行限制.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息. 是否存在一种不执行动态SQL语句也能完成查询的方式呢? 我尝试在一个存储过程中传递一系列以逗号划定界限的值,以限制结果集.但是无论什么时候,我在IN子句中使用变量,都会得到错误信息.是否存在一种不执行动态SQL ServerSQL语句也能完成查询的方式呢? 专家解答: 这
-
Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映.这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下: KILL [CONNECTION | QUERY] thread_id 每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程. KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不
-
mysql kill process解决死锁问题
目录 mysql kill process解决死锁 mysql死锁异常分析及解决 问题产生 原因分析 解决方案 mysql kill process解决死锁 1.查看进程列表, 找到ID show processlist; +--------+--------+--------------------+----------+---------+------+----------+------------------+ | Id | User | Host
-
MySQL存储过程中实现执行动态SQL语句的方法
本文实例讲述了MySQL存储过程中实现执行动态SQL语句的方法.分享给大家供大家参考.具体实现方法如下: mysql> mysql> delimiter $$ mysql> mysql> CREATE PROCEDURE set_col_value -> (in_table VARCHAR(128), -> in_column VARCHAR(128), -> in_new_value VARCHAR(1000), -> in_where VARCHAR(4
-
基于SQLAlchemy实现操作MySQL并执行原生sql语句
场景应用 老大我让爬取内部网站获取数据,插入到新建的表中,并每天进行爬取更新数据(后面做了定时任务).然后根据该表统计每日的新增数量/更新数量进行制图制表,向上级汇报. 思路构建 选用sqlalchemy+mysqlconnector,连接数据库,创建表,对指定表进行CRUD from sqlalchemy import exists, Column, Integer, String, ForeignKey, DateTime, Text, func from sqlalchemy.ext.de
-
MySQL复制表结构和内容到另一张表中的SQL语句
1.复制表结构及数据到新表 复制代码 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 2.只复制表结构到新表 复制代码 代码如下: CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2 即:让WHERE条件不成立. 方法二:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已经支持了) 复制代码 代码如下: CREATE TABLE 新表 LIKE 旧表 3.复制旧表的数据到新表(假设两个表结构一样) 复制代码
-
mysql通过查看跟踪日志跟踪执行的sql语句
在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可. 开启mysql的日志log方法: windows环境下的配置方法: 我使用的版本:Version: 5.0.37-community-nt-log (MySQL Community Edition (GPL)) 找到my.ini,我的是在"G:\Program Files (x86)\MySQL\MySQL Server 5.0"
-
MySQL 存储过程中执行动态SQL语句的方法
drop PROCEDURE if exists my_procedure; create PROCEDURE my_procedure() BEGIN declare my_sqll varchar(500); set my_sqll='select * from aa_list'; set @ms=my_sqll; PREPARE s1 from @ms; EXECUTE s1; deallocate prepare s1; end;
-
教你如何在MySQL命令行中使用SQL语句的规则
规则1: SQL语句必须以分号(;)或者(\G)结束 分号(;)是SQL语句的结束标志.如果遗忘了分号,而直接按下回车键时,在MySQL客户端上将显示如下 mySQL> SELECT * FROM customer -> 因为没有以分号结束,客户端认为SQL语句并没有结束,显示[->]等待用户继续输入命令,直到以分号结束.有些数据库中,支持省略最后的分号的情况. 规则2: 保留关键字不区分大小写 保留关键字是SQL中事先定义好的关键字,如上面检索语句中的SELECT.FROM等就属于保留
-
查找MySQL中查询慢的SQL语句方法
如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_query_time 秒的SQL语句的日志文件,通过查看这个日志文件定位效率较低的SQL .下面介绍MySQL中如何查询慢的SQL语句 一.MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这
-
查询mysql中执行效率低的sql语句的方法
一些小技巧1. 如何查出效率低的语句?在MySQL下,在启动参数中设置 --log-slow-queries=[文件名],就可以在指定的日志文件中记录执行时间超过long_query_time(缺省为10秒)的SQL语句.你也可以在启动配置文件中修改long query的时间,如: 复制代码 代码如下: # Set long query time to 8 seconds long_query_time=8 2. 如何查询某表的索引?可使用SHOW INDEX语句,如: 复制代码 代码如下
随机推荐
- Docker配置国内加速器加速镜像下载的方法
- Vue.js实现无限加载与分页功能开发
- JavaScript实现事件的中断传播和行为阻止方法示例
- 用标准c++实现string与各种类型之间的转换
- Android开发之获取短信验证码后按钮背景变化并且出现倒计时
- 详解Docker目录挂载的方法总结
- Android控件RadioButton实现多选一功能
- thinkphp中html:list标签传递多个参数实例
- python实现上传下载文件功能
- Linux下C开发环境的构成和安装
- PHP字符编码问题之GB2312 VS UTF-8解决方法
- 如何解决在Azure上部署Sqlserver网络访问不了
- iscroll-probe实现下拉刷新和下拉加载效果
- IIS5 ISAPI Extension Back Door
- Python文件去除注释的方法
- fleaphp rolesNameField bug解决方法
- Android实现为ListView同时设置点击时的背景和点击松手之后的背景
- Python延时操作实现方法示例
- 深入学习Java单元测试(Junit+Mock+代码覆盖率)
- Python使用mongodb保存爬取豆瓣电影的数据过程解析