【MySQL】锁——查看当前数据库锁请求的三种方法
来源:互联网 发布:电脑群发短信的软件 编辑:程序博客网 时间:2024/06/02 05:32
MySQL提供了查看当前数据库锁请求的三种方法:
1. show full processlist命令
观察state和info列
2. show engine innodb status\G 命令
查看 TRANSACTIONS 部分和 LATEST DETECTED DEADLOCK 两个部分
3. information_shcema下的三张表(通过这三张表可以更新监控当前事物并且分析存在的锁问题)
—— innodb_trx (
打印innodb内核中的当前活跃(ACTIVE)事务)
—— innodb_locks
( 打印当前状态产生的innodb锁 仅在有锁等待时打印)
—— innodb_lock_waits
(打印当前状态产生的innodb锁等待 仅在有锁等待时打印)
1) innodb_trx表结构说明 (摘取最能说明问题的8个字段)
2)innodb_locks表结构说明
3)innodb_lock_waits表结构说明
可以根据这三张表进行联合查询,得到更直观更清晰的结果,可以参考如下SQL(可根据自己的分析习惯适进行调整)
select
r.trx_isolation_level,
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_trx_thread,
r.trx_state waiting_trx_state,
lr.lock_mode waiting_trx_lock_mode,
lr.lock_type waiting_trx_lock_type,
lr.lock_table waiting_trx_lock_table,
lr.lock_index waiting_trx_lock_index,
r.trx_query waiting_trx_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_trx_thread,
b.trx_state blocking_trx_state,
lb.lock_mode blocking_trx_lock_mode,
lb.lock_type blocking_trx_lock_type,
lb.lock_table blocking_trx_lock_table,
lb.lock_index blocking_trx_lock_index,
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_trx_id
inner join information_schema.innodb_trx r
on r.trx_id=w.requesting_trx_id
inner join information_schema.innodb_locks lb
on lb.lock_trx_id=w.blocking_trx_id
inner join information_schema.innodb_locks lr
on lr.lock_trx_id=w.requesting_trx_id\G;
*************************** 1. row ***************************
trx_isolation_level: REPEATABLE READ
waiting_trx_id: 2900247
waiting_trx_thread: 1070
waiting_trx_state: LOCK WAIT
waiting_trx_lock_mode: S
waiting_trx_lock_type: RECORD
waiting_trx_lock_table: `jiang_test`.`test`
waiting_trx_lock_index: PRIMARY
waiting_trx_query: select * from test where id=3 lock in share mode
blocking_trx_id: 2900241
blocking_trx_thread: 1137
blocking_trx_state: RUNNING
blocking_trx_lock_mode: X
blocking_trx_lock_type: RECORD
blocking_trx_lock_table: `jiang_test`.`test`
blocking_trx_lock_index: PRIMARY
blocking_query: NULL
1 row in set (0.01 sec)
- 【MySQL】锁——查看当前数据库锁请求的三种方法
- 三种查看MySQL数据库版本的方法
- MySQL查看与修改当前数据库编码的方法
- mysql查看当前使用的数据库---mysql
- MySQL查看当前数据库
- MySQL查看当前数据库
- 从请求中获取当前用户的三种方法
- 查看三种MySQL字符集的方法
- 查看MySQL字符集的三种方法
- 查看三种MySQL字符集的方法
- 查看修改mysql数据库当前的编码
- mysql查看当前使用的数据库
- MySQL 查看当前正在使用的数据库
- MySQL 查看当前使用的数据库
- SqlServer 查看当前锁请求脚本
- MySQL查看当前数据库库
- MySQL 查看当前所用数据库
- MYSQL下查看当前正在使用的数据库
- LeetCode 21 Merge Two Sorted Lists
- AI将带我们去何方?(中-论述篇)
- ZOJ 1610 线段树
- OJ题目:雇佣兵
- css做正八边形
- 【MySQL】锁——查看当前数据库锁请求的三种方法
- js 鼠标单击多行文本框时怎样将光标定在文本框最前面
- Angular 2 HostListener & HostBinding
- sphinx增量索引和主索引来实现索引的实时更新
- dubbo+zookeeper,传输数据超时问题
- Laravel 5 性能优化
- 对于具体化的查询结果,不支持该方法
- BP神经网络:图片的分割和规范化:《Python》系列。
- 图像检索系统《Deep Learning of Binary Hash Codes for Fast Image Retrieval》