MySQL查看死锁和解除锁

news/2024/5/20 13:00:38 标签: mysql, 会话, 死锁

解除正在死锁的状态有两种方法:

第一种杀死会话

1.查询是否锁表

show OPEN TABLES where In_use > 0;

2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)

show processlist

或者查询出所有需要Killd的Id;

select concat('KILL ',id,';') from information_schema.processlist where user='root';

3.杀死进程id(就是上面命令的id列)

kill id

第二种杀死事务:

1.查看下在锁的事务 

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2.杀死进程id(就是上面命令的trx_mysql_thread_id列)

kill 线程ID

例子:

查出死锁进程:SHOW PROCESSLIST
杀掉进程          KILL 420821;

其它关于查看死锁的命令:

1:查看当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2:查看当前锁定的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

3:查看当前等锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

下面是理论知识:

会话和事务线程的关系

1、会话可以创建多个事务
比如:使用客端连接数据库,这样你就可以执行很多个事务了

2、一个事务只能由一个会话产生
在数据库里的事务,如果在执行的SQL都是由会话发起的,哪怕是自动执行的JOB也是由系统会话发起的

3、一个事务可能会产生一个或多个线程
比如RMAN备份,是可以创建多个线程可加快备份速度

4、一个线程在同一时间内只能执行一个事务
而一个线程,在没结束当前事务是无法释放资源来执行第二个事务

connection和session的定义和区别:

1.连接(connection)是一个物理的概念,它指的是一个通过网络建立的客户端和专有服务器(Dedicated Server)或调度器(Shared Server)的一个网络连接。
2.会话(session)是一个逻辑的概念,它是存在于实例中。

注:创建一个连接(connection)实际上是在某个实例(instance,或者说是进程)中创建一个或多个线程。

两者关系:

  • 1、一个连接可以拥有多个会话也可以没有会话(实际上,一条连接上的各个会话可以使用不同的用户身份),同一个连接上的不同会话之间不会相互影响。
  • 2、 两个会话之间的影响,体现在锁和锁存,即对相同资源的操作(对象定义或数据块)或请求(CPU/内存),它们的处理一般是按队列来处理的,前面的没有处理 好,后面的就要等待。如果以打电话来比喻:connect就好比你接通对方,这时,connect就建立了,有没有通话,不管。双方进行通话,则 session建立了,如果换人,则新的session建立,原session结束,类似的,可以在同一个connect上进行多个会话。最后,挂 机,connect结束。

MySQL中的连接、实例、会话、数据库、线程之间的关系 - 雅思敏 - 博客园


http://www.niftyadmin.cn/n/1559724.html

相关文章

LeetCode经典算法分享

为什么要学习算法 1李开复曾经把基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。 整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。真正学懂计算机的人(不只是“编程匠”)都对数学有相当…

2020-08-16

我的第一篇博文 之前假期一直在打游戏啊看电视剧,突然上来翻了翻,发现和自己同级的同学已经写了一百多篇博文了,我的天 之前是我一直玩,以后我一定好好学习哒(怎么可能呢) 电脑一直关机出问题,…

mysql函数集

sql语句的顺序 select from where group by having order by limit 常规函数 RTrim LTrim Left Right Length Locate Lower Upper SubString Soundex select name from user where Soundex(name) Soundex(Y lie); //有条记录name Y lee 发音相似就会被检索出来 不知道对中文拼…

socket udp java_JAVA Socket之UDP | 学步园

结果//UDP发送端import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.io.*;import java.util.Scanner;public class UDPSend{public static void main(String[] args) throws Exception{//启用 UDP 广播发送和接收数据报包…

天梯赛HBU训练营——7-2树的遍历

给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中…

3.3 停止和重启 Activity

正确停止和重启 Activity 是 Activity 生命周期中的重要过程,其可确保您的用户知晓应用始终保持活跃状态并且不会丢失进度。Activity 停止和重启的场景主要有以下几种: 用户打开“最近应用”窗口并从您的应用切换到另一个应用。您的应用中当前位于前台的…

深入理解Spring源码之剖析AOP(注解配置方式)

先贴出整篇文章的测试代码: import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext;import com.atguigu.aop.MathCalculator; import com.atguigu.bean.Boss; import com.atguigu.bean.Car; import com.atgu…

java调用接口乱码_关于服务器之间接口调用中文乱码问题解决

常规解决办法:(1)、String userID new String(request.getParameter("userID").getBytes("iso-8859-1"), "utf-8");(2)、request.setCharacterEncoding("UTF-8");(3)、如果是页面请求,并用了encode加密&#x…