Rootop 服务器运维与web架构

InnoDB引擎中的锁相关表字段

通过3个系统表来查看锁信息

INNODB_TRX表
a) trx_id: innodb存储引擎内部事务唯一的事务id。
b) trx_state: 当前事务的状态。
c) trx_started: 事务开始的时间。
d) trx_requested_lock_id: 等待事务的锁id,如trx_state的状态为LOCK WAIT,那么该值代表当前事务之前占用锁资源的id,如果trx_state不是LOCK WAIT的话,这个值为null。
e) trx_wait_started: 事务等待开始的时间。
f) trx_weight: 事务的权重,反映了一个事务修改和锁住的行数。在innodb的存储引擎中,当发生死锁需要回滚时,innodb存储引擎会选择该值最小的事务进行回滚。
g) trx_mysql_thread_id: 正在运行的mysql中的线程id,show full processlist显示的记录中的thread_id。
h) trx_query: 事务运行的sql语句,在实际中发现,有时会显示为null值,当为null的时候,事务中等待锁超时直接报错(ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction)后,trx_query就显示为null值


INNODB_LOCKS表
a) lock_id: 锁的id以及被锁住的空间id编号、页数量、行数量
b) lock_trx_id: 锁的事务id。
c) lock_mode: 锁的模式。
d) lock_type: 锁的类型,表锁还是行锁
e) lock_table: 要加锁的表。
f) lock_index: 锁的索引。
g) lock_space: innodb存储引擎表空间的id号码
h) lock_page: 被锁住的页的数量,如果是表锁,则为null值。
i) lock_rec: 被锁住的行的数量,如果表锁,则为null值。
j) lock_data: 被锁住的行的主键值,如果表锁,则为null值。


INNODB_LOCK_WAITS表
当事务量比较少,我们可以直观的查看,当事务量非常大,锁等待也时常发生的情况下,这个时候可以通过INNODB_LOCK_WAITS表来更加直观的反映出当前的锁等待情况:
1) requesting_trx_id:申请锁资源的事务id。
2) requested_lock_id:申请的锁的id。
3) blocking_trx_id: 阻塞的事务id。
4) blocking_lock_id: 阻塞的锁的id。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3832.html

作者:Venus

服务器运维与性能优化

评论已关闭。