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