innodb 死锁分析之相关表结构说明
表INNODB_TRX的结构说明
字段名 | 说明 |
trx_id | InnoDB存储引擎内部唯一的事务ID |
trx_state | 当前事务的状态 |
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_id | MySQL中的线程ID,SHOW PROCESSLIST 显示的结果 |
trx_query | 事务运行的语句 |
表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_lock_id | 阻塞的锁的ID |