ITPub博客

首页 > 数据库 > MySQL > MySQL 中information_schema 架构中与lock 相关的表介绍!

MySQL 中information_schema 架构中与lock 相关的表介绍!

原创 MySQL 作者:七_仔 时间:2015-11-18 10:59:47 0 删除 编辑
对于MySQL来说,在information_schema 架构下添加了表 innodb_trx     innodb_locks    innodb_lock_waits 三张表。通过这三张表我们可以简单的监控当前事务并分析可能存在的锁,
下面我们对这三张表进行解析:
INNODB_TRX
字段名称                                                               说明
trx_id                            innodb 存储引擎内部唯一的事务ID 
trx_state                       当前事务的状态
trx_started                    事务的开始时间
trx_requested_lock_id   等待事务的锁ID。如trx_state 的状态为LOCK WAIT ,那么该值代表当前的事务等待之前事务占用锁资源的ID。 若trx_state 不事LOCK WAIT ,则该指为空。
trx_wait_started            事务等待开始的事件
trx_weight                    事务的权重,反映了一个事务修改和锁住的行数,在Innodb 存储引擎中,当发生死锁需要回滚时,Innodb 存储引擎会选择一个权重最小的值进行回滚。
trx_mysql_thread_id      MySQL中的线程ID,SHOW PROCESSLIST 显示的结果
trx_query                      事务运行的SQL 语句

INNODB_LOCKS的结构
lock_id        锁的ID
lock_trx_id   事务的ID
lock_mode   锁的模式
lock_type     锁的类型,表锁还事行锁
lock_table     要加锁的表
lock_index    锁住的索引
lock_space    锁对象的space id
lock_page      事务锁定页的数量,若是表锁,则该值为null
lock_rec          事务锁定行的数量,若是表锁,则该指为null
lock_data        事务锁定记录的主键值,若是表锁,则该值为null 

INNODB_LOCK_WAITS
字段                                        说明
requesting_trx_id                     申请锁资源的事务ID
requesting_lock_id                   申请的锁的ID
blocking_trx_id                        阻塞的事务ID
blocking_trx_id                        阻塞的锁的ID

可以通过以上的三张表查询到详细的事务锁的信息
也可以通过以下sql 进行详细的方法查询
select 
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread, 
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread,
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 \G;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30176559/viewspace-1840280/,如需转载,请注明出处,否则将追究法律责任。

下一篇: MySQL事务介绍
请登录后发表评论 登录
全部评论

注册时间:2015-03-25

  • 博文量
    47
  • 访问量
    204360