首页
学习
活动
专区
圈层
工具
发布

MySql查看死锁及解锁方法

解除正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程。...否则,您只能看到您自己的线程) show processlist 3.杀死进程id(就是上面命令的id列) kill id 第二种: 1.查看下在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX...; 2.杀死进程id(就是上面命令的trx_mysql_thread_id列) kill 线程ID 例子: 查出死锁进程:SHOW PROCESSLIST 其它关于查看死锁的命令: 1:查看当前的事务...SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; 2:查看当前锁定的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS...; 3:查看当前等锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

3.7K30

java 查看线程死锁_java 查看线程死锁

那我们怎么确定一定是死锁呢?有两种方法。 1>使用JDK给我们的的工具JConsole,可以通过打开cmd然后输入jconsole打开。 1)连接到需要查看的进程。...2)打开线程选项卡,然后点击左下角的“检测死锁” 3)jconsole就会给我们检测出该线程中造成死锁的线程,点击选中即可查看详情: 从上图中我们可以看出: ①在线程Thread-1中,从状态可以看出...Thread-1一直等待paper资源,而Thread–一直等待pen资源,于是这两个线程就这么僵持了下去,造成了死锁。...2>直接使用JVM自带的命令 1)首先通过 jps 命令查看需要查看的Java进程的vmid,如图,我们要查看的进程TestDeadLock的vmid号是7412; 2)然后利用 jstack 查看该进程中的堆栈情况

3.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    查看死锁

    查看死锁 SELECT s.sid "会话ID", s.lockwait "等待锁", s.event "等待的资源/事件", -- 最近等待或正在等待的资源/事件 DECODE(lo.locked_mode...s.username='OPT_WMS_USER' ; -- Oracle用户名称,大写 说明: 如果lockwait值不为空(形如0000001F83D6C748),并且status为ACTIVE,则说明存在死锁...OPEN_VERSIONS NUMBER 指示子游标是否被锁定,1表示被锁定,0表示未被锁定 USERS_OPENING NUMBER 任意子游标打开的用户数。...PHYSICAL_WRITE_BYTES NUMBER 被监控SQL写入磁盘的字节数 OPTIMIZED_PHY_READ_REQUESTS NUMBER 被监控SQL从数据库智能闪存缓存发起的物理读取...另请参阅:Oracle数据库概念,以获取有关表锁锁模式的更多信息 SELECT object_id "被锁住的对象ID", locked_mode "锁模式", session_id "会话ID",

    3.1K50

    【MySQL】mysql死锁以及死锁日志分析

    1.死锁的概念 死锁:死锁一般是事务相互等待对方资源,最后形成环路造成的。 对于死锁,数据库处理方法:牺牲一个连接,保证另外一个连接成功执行。...发生死锁会返回ERROR:1213 错误提示,大部分的死锁InnoDB存储引擎本身可以侦测到,不需要人为进行干预。...注意: InnoDB存储引擎并不会回滚大部分的错误异常,像阻塞章节里面的例子,但是死锁例外,发现死锁后,InnoDB存储引擎会马上回滚一个事务,会返回1213错误。...S锁前面还有一个未申请成功的X锁,所以S锁必须等待,所以形成了循环等待,死锁出现了。...通过阅读死锁日志,我们可以清楚地知道两个事务形成了怎样的循环等待,再加以分析,就可以逆向推断出循环等待的成因,也就是死锁形成的原因。

    4.6K41

    Mysql数据库死锁挂起的处理方法

    死锁解决方法 MySQL在进行一些alter table等DDL操作时,如果该表上有未提交的事务则会出现 Waiting for table metadata lock, 而一旦出现metadata lock...show processlist; 找到正在运行sql的进程 杀死挂起的进程即导致表锁死的进程: kill 17909; ---17909是进程的id 杀死未提交的事务 使用管理员权限登录mysql...数据库查看未提交的事务: (如果不是管理员权限会报错:Access denied; you need (at least one of) the PROCESS privilege(s) for this...; 这时会看到未提交的事务,有以下相关信息: trx_state: 事务状态,一般为RUNNING trx_started: 事务执行的起始时间,若时间较长,则要分析该事务是否合理 trx_mysql_thread_id...: MySQL的线程ID,用于kill trx_query: 事务中的sql 杀死线程ID,问题解决。

    3.5K30

    MySQL查看数据库安装路径

    有时候在我们开发的过程中并不一定记得数据库的安装路径。...比如要查看MySQL 数据库的安装目录在哪里: 我们可以通过mysql命令查看mysql的安装路径: # 以下两个sql任意一个可查询 select @@basedir as basePath from...dual ; show variables like '%basedir%'; 上面可以看到基础的安装路径,查看数据库data的路径怎么看,很简单,把上面的参数变量换成datadir即可: # 以下查询任意一个均可...,那么朋友会问,如果也不知道登录mysql 的账户密码,那又如何在查看mysql路径呢?...方法一: 1:查询运行文件所在路径 which mysql 然后可通过 /usr/bin/mysql -u账号 -p密码 连接Mysql: 然后执行上面的任意一个MySQL查看安装路径。

    15.6K20
    领券