MySQL如何查看当前数据库锁请求
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,小编给大家分享一下MySQL如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL版本:5.6.
千家信息网最后更新 2025年01月21日MySQL如何查看当前数据库锁请求
可以根据这三张表进行联合查询,得到更直观更清晰的结果,可以参考如下SQL(可根据自己的分析习惯适进行调整)
小编给大家分享一下MySQL如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
MySQL版本:5.6.21
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个字段)
字段名 | 说明 |
trx_id | innodb存储引擎内部唯一的事物ID |
trx_state | 当前事物状态(running和lock wait两种状态) |
trx_started | 事物的开始时间 |
trx_requested_lock_id | 等待事物的锁ID,如trx_state的状态为Lock wait,那么该值带表当前事物等待之前事物占用资源的ID,若trx_state不是Lock wait 则该值为NULL |
trx_wait_started | 事物等待的开始时间 |
trx_weight | 事物的权重,在innodb存储引擎中,当发生死锁需要回滚的时,innodb存储引擎会选择该值最小的进行回滚 |
trx_mysql_thread_id | mysql中的线程id, 即show processlist显示的结果 |
trx_query | 事物运行的SQL语句 |
2)innodb_locks表结构说明
字段名 | 说明 |
lock_id | 锁的ID |
lock_trx_id | 事物的ID |
lock_mode | 锁的模式(S锁与X锁两种模式) |
lock_type | 锁的类型 表锁还是行锁(RECORD) |
lock_table | 要加锁的表 |
lock_index | 锁住的索引 |
lock_space | 锁住对象的space id |
lock_page | 事物锁定页的数量,若是表锁则该值为NULL |
lock_rec | 事物锁定行的数量,若是表锁则该值为NULL |
lock_data | 事物锁定记录主键值,若是表锁则该值为NULL(此选项不可信) |
3)innodb_lock_waits表结构说明
字段名 | 说明 |
requesting_trx_id | 申请锁资源的事物ID |
requested_lock_id | 申请的锁的ID |
blocking_trx_id | 阻塞其他事物的事物ID |
blocking_lock_id | 阻塞其他锁的锁ID |
可以根据这三张表进行联合查询,得到更直观更清晰的结果,可以参考如下SQL(可根据自己的分析习惯适进行调整)
selectr.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_queryfrom 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 ron r.trx_id=w.requesting_trx_id inner join information_schema.innodb_locks lbon lb.lock_trx_id=w.blocking_trx_idinner join information_schema.innodb_locks lron 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: RECORDblocking_trx_lock_table: `jiang_test`.`test`blocking_trx_lock_index: PRIMARY blocking_query: NULL1 row in set (0.01 sec)
以上是"MySQL如何查看当前数据库锁请求"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
事物
状态
字段
数据
数据库
引擎
篇文章
结构
若是
存储
内容
命令
数量
时间
模式
结果
资源
部分
问题
分析
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
2021网络安全知识培训
open服务器搭建虚拟局域网
校园网络安全应急实施方案
景安网络服务器机房
四川软件开发工具
临沂网络安全吗
网评沈阳新华互联网科技学校
gp数据库更新字段长度
网络安全用户信息保密 制度
正规软件开发价钱是多少
服务器认不到硬盘是主板问题吗
文档版本管理服务器
晋州游戏软件开发
游戏服务器哪个公司最好
ocm数据库怎么删除
网络安全要学什么基础学科
工商网络安全法
博乐新华互联网科技
知识数据库系统的优缺点
软件开发中 算法的作用
黑客入侵网络安全部视频
一个公司的网络技术
华为认证网络技术
中冶南方软件开发公司
计算机网络技术就业打算
stm服务器登录不上
工区网络安全应急预案
acfun服务器错误
网络安全管理包括什么意思
网络安全教育知识内容幼儿园