美文网首页
MySQL查看事务锁.sql

MySQL查看事务锁.sql

作者: 灵静自远 | 来源:发表于2017-09-27 17:27 被阅读0次

    简介

    有时候看看 show engine innodb status, 并结合 show full processlist. 再不行就看下列三个视图。

    视图结构说明

    INNODB_LOCKS

    +————-+———————+——+—–+———+——-+
    | Field | Type | Null | Key | Default | Extra |
    +————-+———————+——+—–+———+——-+
    | lock_id | varchar(81) | NO | | | |#锁ID
    | lock_trx_id | varchar(18) | NO | | | |#拥有锁的事务ID
    | lock_mode | varchar(32) | NO | | | |#锁模式
    | lock_type | varchar(32) | NO | | | |#锁类型
    | lock_table | varchar(1024) | NO | | | |#被锁的表
    | lock_index | varchar(1024) | YES | | NULL | |#被锁的索引
    | lock_space | bigint(21) unsigned | YES | | NULL | |#被锁的表空间号
    | lock_page | bigint(21) unsigned | YES | | NULL | |#被锁的页号
    | lock_rec | bigint(21) unsigned | YES | | NULL | |#被锁的记录号
    | lock_data | varchar(8192) | YES | | NULL | |#被锁的数据
    +————-+———————+——+—–+———+——-+

    INNODB_LOCK_WAITS

    +——————-+————-+——+—–+———+——-+
    | Field | Type | Null | Key | Default | Extra |
    +——————-+————-+——+—–+———+——-+
    | requesting_trx_id | varchar(18) | NO | | | |#请求锁的事务ID
    | requested_lock_id | varchar(81) | NO | | | |#请求锁的锁ID
    | blocking_trx_id | varchar(18) | NO | | | |#当前拥有锁的事务ID
    | blocking_lock_id | varchar(81) | NO | | | |#当前拥有锁的锁ID
    +——————-+————-+——+—–+———+——-+

    INNODB_TRX

    +—————————-+———————+——+—–+———————+——-+
    | Field | Type | Null | Key | Default | Extra |
    +—————————-+———————+——+—–+———————+——-+
    | trx_id | varchar(18) | NO | | | |#事务ID
    | trx_state | varchar(13) | NO | | | |#事务状态:
    | trx_started | datetime | NO | | 0000-00-00 00:00:00 | |#事务开始时间;
    | trx_requested_lock_id | varchar(81) | YES | | NULL | |#innodb_locks.lock_id
    | trx_wait_started | datetime | YES | | NULL | |#事务开始等待的时间
    | trx_weight | bigint(21) unsigned | NO | | 0 | |#
    | trx_mysql_thread_id | bigint(21) unsigned | NO | | 0 | |#事务线程ID
    | trx_query | varchar(1024) | YES | | NULL | |#具体SQL语句
    | trx_operation_state | varchar(64) | YES | | NULL | |#事务当前操作状态
    | trx_tables_in_use | bigint(21) unsigned | NO | | 0 | |#事务中有多少个表被使用
    | trx_tables_locked | bigint(21) unsigned | NO | | 0 | |#事务拥有多少个锁
    | trx_lock_structs | bigint(21) unsigned | NO | | 0 | |#
    | trx_lock_memory_bytes | bigint(21) unsigned | NO | | 0 | |#事务锁住的内存大小(B)
    | trx_rows_locked | bigint(21) unsigned | NO | | 0 | |#事务锁住的行数
    | trx_rows_modified | bigint(21) unsigned | NO | | 0 | |#事务更改的行数
    | trx_concurrency_tickets | bigint(21) unsigned | NO | | 0 | |#事务并发票数
    | trx_isolation_level | varchar(16) | NO | | | |#事务隔离级别
    | trx_unique_checks | int(1) | NO | | 0 | |#是否唯一性检查
    | trx_foreign_key_checks | int(1) | NO | | 0 | |#是否外键检查
    | trx_last_foreign_key_error | varchar(256) | YES | | NULL | |#最后的外键错误
    | trx_adaptive_hash_latched | int(1) | NO | | 0 | |#
    | trx_adaptive_hash_timeout | bigint(21) unsigned | NO | | 0 | |#
    +—————————-+———————+——+—–+———————+——-+

    例子

    参考语句:

    
    show full processlist;
         
    SELECT  trx_mysql_thread_id, trx_query 
    FROM
        information_schema.INNODB_TRX TR
    WHERE trx_id IN ( SELECT DISTINCT blocking_trx_id 
    FROM
        information_schema.INNODB_LOCK_WAITS LW );
        
    SELECT  * FROM  information_schema.INNODB_TRX TR;
        
    SELECT * FROM information_schema.INNODB_LOCKS IL;
        
    SELECT * FROM information_schema.INNODB_LOCK_WAITS LW;
    
    

    相关文章

      网友评论

          本文标题:MySQL查看事务锁.sql

          本文链接:https://www.haomeiwen.com/subject/ecnuextx.html