InnoDB 与 MyISAM 的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。
查看 InnoDB行锁争用情况
show status like ‘innodb_row_lock%‘;
如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,可以通过查询 information_schema 数据库中相关的表来查看锁情况,或者通过设置InnoDBMonitors来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因。
(1)通过查询information_schema数据库中的表了解锁等待情况:
select * from information_schema.innodb_locks;