1. 查看系统的锁等待情况
show status like 'innodb_row_lock%';
对各个状态量的说明如下:
- Innodb_row_lock_current_waits: 当前正在等待锁定的数量
- Innodb_row_lock_time: 从系统启动到现在锁定总时间长度
- Innodb_row_lock_time_avg: 每次等待所花平均时间
- Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花时间
- Innodb_row_lock_waits: 系统启动后到现在总共的等待次数
2. 查看事务
select * from INFORMATION_SCHEMA.INNODB_TRX;
3. 查看锁
select * from INFORMATION_SCHEMA.INNODB_LOCKS;
--- 8.0 之后 : 换成这张表 PERFORMANCE_SCHEMA.DATA_LOCKS;
4. 查看锁等待
select * from INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
--- 8.0 之后 : 换成这张表 PERFORMANCE_SCHEMA.DATA_LOCK_WAITS;
5. 释放锁
kill trx_mysql_thread_id
--- 这个字段在INFORMATION_SCHEMA.INNODB_TRX 表中, 对应8.0 之后PERFORMANCE_SCHEMA.DATA_LOCKS表中的 thread_id
6. 查看锁等待详情
show engine innodb status;