1)表锁定
通过检查 table_locks_waited 和 table_locks_immediate 状态变量来分析表锁定。
SHOW STATUS LIKE 'table%';
说明:
Table_locks_immediate:能够立即获得表级锁的锁请求次数
Table_locks_waited:不能立即获取表级锁而需要等待的锁请求次数
分析:
如果table_locks_waited值较高,且存在性能问题,则说明存在着较严重的表级锁争用情况。这时,需要对应用做进一步的检查,来确定问题所在,应首先优化查询,然后拆分表或复制表。
2)行级锁
通过检查 Innodb_row_lock状态变量来分析行锁的争用情况
SHOW STATUS LIKE 'Innodb_row_lock%';
性能优化-数据库死锁监控">
说明:
Innodb_row_lock_current_waits:当前锁等待的数量
Innodb_row_lock_time:自系统启动到现在,锁定的总时间,单位:毫秒 ms。
Innodb_row_lock_time_avg:平均锁定的时间,单位:毫秒 ms。
Innodb_row_lock_time_max:最大锁定时间,单位:毫秒 ms。
Innodb_row_lock_waits:自系统启动到现在,锁等待次数,即锁定的总次数