千家信息网

MySQL如何查看当前数据库锁请求

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下MySQL如何查看当前数据库锁请求,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL版本:5.6.
千家信息网最后更新 2026年11月01日MySQL如何查看当前数据库锁请求

小编给大家分享一下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_idinnodb存储引擎内部唯一的事物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_idmysql中的线程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安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 广州淘业互联网络科技 广州百单互联网科技有限公司 互联网科技开发公司 上海互联网科技有限公司 广州宏创互联网科技 美国互联网黑科技 互联网科技生活的内容 恒生互联网科技指数跳水 链环科技传统企业怎么转型互联网 亳州好赞互联网科技有限公司 佛山市翊博互联网络科技有限公司 互联网行业科技股 黑科技 体验场景 互联网大会 风投北京互联网科技 互联网科技新闻 西安左小互联网科技有限公司 众联互联网络科技 北京品多多互联网科技有限公司 互联网 科技节活动 微视频大赛 湖南永感互联网科技有限公司 科技赋能下的互联网金融 互联网巨头反垄断金融科技 济南华为互联网科技产业总部基地 内蒙古九一互联网科技 互联网科技和法律行业 科技互联网行业投资研究 陕西九四连强互联网科技有限公司 众联互联网络科技 互联网科技快速发展优美句子
0