必威体育Betway必威体育官网
当前位置:首页 > IT技术

mysql查询死锁信息

时间:2019-06-10 14:41:02来源:IT技术作者:seo实验室小编阅读:52次「手机版」
 

xifan

INNODB_LOCKS表

INNODB_LOCKS表主要包含了InnoDB事务锁的具体情况,包括事务正在申请加的锁和事务加上的锁。

Column name

Description

lock_id 锁ID
lock_trx_id 事务ID, 可以连INNODB_TRX表查事务详情
lock_mode 锁的模式: SXISIXS_GAPX_GAPIS_GAPIX_GAP, or AUTO_INC
lock_type 锁的类型,行级锁 或者表级锁
lock_table 加锁的表
lock_index 如果是lock_type='RECORD' 行级锁 ,为锁住的索引,如果是表锁为null
lock_space 如果是lock_type='RECORD' 行级锁 ,为锁住对象的Tablespace ID,如果是表锁为null
lock_page 如果是lock_type='RECORD' 行级锁 ,为锁住页号,如果是表锁为null
lock_rec 如果是lock_type='RECORD' 行级锁 ,为锁住页号,如果是表锁为null
lock_data 事务锁住的主键值,若是表锁,则该值为null

INNODB_TRX 表

INNODB_TRX表主要是包含了正在InnoDB引擎中执行的所有事务的信息,包括waiting for a lock和running的事务

Column name

Description

trx_id InnoDB存储引擎内部唯一的事务ID
trx_state 当前事务的状态: RUNNINGLOCK WAITROLLING BACK or COMMITTING.
trx_started 事务的开始时间
trx_requested_lock_id 事务等待的锁的ID(如果事务状态不是LOCK WAIT,这个字段是NULL),详细的锁的信息可以连查INNODB_LOCKS表
trx_wait_started 事务等待开始的时间 (如果事务状态不是LOCK WAIT,这个字段是NULL)
trx_weight 事务的权重,反映了一个事务修改和锁住的行数。当发生死锁回滚的时候,优先选择该值最小的进行回滚
trx_mysql_thread_id Mysql中的线程ID,show processlist显示的结果
trx_query 事务运行的sql语句
trx_operation_state 事务当操作的类型 如updating or deleting,starting index read等
trx_tables_in_use 查询用到的表的数量
trx_tables_locked 查询加行锁的表的数量
trx_lock_structs The number of locks reserved by the transaction
trx_lock_memory_bytes 锁在内存占用的空间大小
trx_rows_locked 事务锁住的行数(不是准确数字)
trx_rows_modified 事务插入或者修改的行数
   
trx_isolation_level 隔离级别
trx_unique_checks 唯一键检测 是否开启
trx_foreign_key_checks 外键检测 是否开启
 

3、INNODB_LOCK_WAITS表

INNODB_LOCK_WAITS表包含了blocked的事务的锁等待的状态

Column name

Description

requesting_trx_id 申请锁资源的事务ID
requesting_lock_id 申请的锁的ID
blocking_trx_id 租塞的事务ID
blocking_lock_id 租塞的锁的ID

4、查询死锁详情

SELECT r.trx_id waiting_trx_id,r.trx_mysql_thread_id waiting_thread,

TIMESTAMPADD(SECOND,r.trx_wait_started,CURRENT_TIMESTAMP) wait_time,

r.trx_query waiting_query,

l.lock_table waiting_table_lock,

b.trx_id blocking_trx_id,b.trx_mysql_thread_id blocking_thread,

SUBSTRING(p.`HOST`,1,INSTR(p.`HOST`,':')-1) blocking_host,

SUBSTRING(p.`HOST`,INSTR(p.`HOST`,':')+1) blocking_port,

IF(p.COMMAND ='Sleep',p.TIME,0) idle_in_trx,

b.trx_query blocking_query

from information_schema.INNODB_LOCK_WAITS w

INNER JOIN information_schema.INNODB_TRX b ON b.trx_id = w.blocking_lock_id

INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id

INNER JOIN information_schema.INNODB_LOCKS l ON l.lock_id = w.requested_lock_id

LEFT JOIN information_schema.`PROCESSLIST` p ON p.id = b.trx_mysql_thread_id

ORDER BY wait_time desc;

5、有多少查询被哪些线程阻塞

SELECT CONCAT('thread',b.trx_mysql_thread_id,' from ',p.`HOST`) who_blocks,

IF(p.COMMAND ='Sleep',p.TIME,0) idle_in_trx,

MAX(TIMESTAMPADD(SECOND,r.trx_wait_started,NOW())) max_wait_time,

COUNT(1) num_waiters

FROM information_schema.INNODB_LOCK_WAITS w 

INNER JOIN information_schema.INNODB_TRX b on b.trx_id = w.blocking_lock_id

INNER JOIN information_schema.INNODB_TRX r ON r.trx_id = w.requesting_trx_id

LEFT JOIN information_schema.`PROCESSLIST` p ON p.id = b.trx_mysql_thread_id

GROUP BY who_blocks ORDER BY num_waiters desc;

相关阅读

Navicat for MySQL 12破解

Premiumsoft Navicat Premium 12.0.26中文破解版下载安装和注册机激活教程网盘

[MySQL高级](一) EXPLAIN用法和结果分析

1. EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是

MySQL timestampdiff()函数

转载自   MySQL timestampdiff()函数 MySQL TIMESTAMPDIFF函数简介 下面说明了TIMESTAMPDIFF函数的语法。 TIMESTAMPDIFF(uni

Navicat for MySQL 11注册码\激活码

Navicat for MySQL注册码用来激活 Navicat for MySQL 软件,只要拥有 Navicat 注册码就能激活相应的 Navicat 产品。目前 Navicat

搭建Linux服务器(MySQL,Tomcat,JDK)

搭建Linux服务器(MySQL,Tomcat,JDK) 一个项目放到服务器上,要搭环境,就把过程和要注意的点总结一下 连接服务器 以前经

分享到:

栏目导航

推荐阅读

热门阅读