Mysql之锁(二)

1、查看锁

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX; -- 记录当前运行的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 记录当前出现的锁

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; -- 记录锁等待的对应关系

2、INNODB_TRX表字段:

  • trx_id:InnoDB存储引擎内部唯一的事物ID
  • trx_status:当前事务的状态, RUNNING, LOCK WAIT, ROLLING BACK or COMMITTING.
  • trx_status:事务的开始时间
  • trx_requested_lock_id:事务等待的锁的ID(如果事务状态不是LOCK WAIT,这个字段是NULL),详细的锁的信息可以连查INNODB_LOCKS表
  • trx_wait_started:事务等待的开始时间
  • trx_weight:事务的权重,反应一个事务修改和锁定的行数,当发现死锁需要回滚时,权重越小的值被回滚
  • trx_mysql_thread_id:MySQL中的进程ID,与show processlist中的ID值相对应
  • trx_query:事务运行的SQL语句
  • trx_operation_state:事务当操作的类型 如updating or deleting,starting index read等
  • trx_tables_in_use:查询用到的表的数量
  • trx_tables_locked:查询加行锁的表的数量
  • trx_rows_locked:事务锁住的行数(不是准确数字)
  • trx_rows_modified:事务插入或者修改的行数

3、INNODB_LOCKS表:

  • lock_id:锁ID
  • lock_trx_id:拥有锁的事务 ID。可以和 INNODB_TRX 表 JOIN 得到事务的详细信息。
  • lock_mode:锁的模式。
  • lock_type:锁的类型。RECORD 代表行级锁,TABLE 代表表级锁。
  • lock_table:被锁定的或者包含锁定记录的表的名称。
  • lock_index:当LOCK_TYPE=’RECORD’ 时,表示索引的名称;否则为 NULL。
  • lock_space:当LOCK_TYPE=’RECORD’ 时,表示锁定行的表空间 ID;否则为 NULL。
  • lock_page:当 LOCK_TYPE=’RECORD’ 时,表示锁定行的页号;否则为 NULL。
  • lock_rec:当 LOCK_TYPE=’RECORD’ 时,表示一堆页面中锁定行的数量,亦即被锁定的记录号;否则为 NULL。
  • lock_data:当 LOCK_TYPE=’RECORD’ 时,表示锁定行的主键;否则为NULL。

4、INNODB_LOCK_WAITS表:

  • requesting_trx_id:申请锁资源的事务ID
  • requesting_lock_id:申请的锁的ID
  • blocking_trx_id:租塞的事务ID
  • blocking_lock_id:租塞的锁的ID

猜你喜欢

转载自www.cnblogs.com/tongxuping/p/12334695.html