MySQL如何查看当前数据库锁请求
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下MySQL如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL版本:5.6.
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
建设网络安全性借口
邦网络安全绘画
闲置手机怎么做服务器
葫芦岛网络安全活动
安徽哪个区适合用服务器云主机
电动车上牌数据库连接不了
关于网络安全主题班会的方案
服务器均衡负载教程
abap 数据库表变更
沈阳软件开发app流程
国家标准数据库
show 所有数据库
北京网络技术咨询职责
软件开发计划验收标准
桌面型网络安全单向导入系统
免备案服务器 香港
奥维地图正在升级数据库
学电脑软件开发首先得报什么专业
网络安全从我做起教育黑板报
腾讯云香港服务器网络优化
软件开发常用考题
电视连着网显示无法连接服务器
中国目前有几台根服务器
华为入职网络安全考试
国内知名的网络技术公司
邢台奇点软件开发有限公司
苹果电脑登陆云服务器
淘客网络技术
矿产资源储量数据库招标
数据库安全性包括哪些内容