对于两种锁定级别,MySQL内部有两组专门的状态变量记录系统内部锁资源征用情况。
对于MYISAM使用的表级锁定
mysql>SHOW STATUS LIKE "table%";
-------------
Table_locks_immediate 100
Table_locks_waited 0
这两个状态变量记录MySQL内部表级锁定的情况。
Table_locks_immediate 产生表级锁定的次数
Table_locks_waited 出现表级锁定征用而发生等待的次数,如果这个值比较高,说明系统中表级锁定征用现象比较严重。
对于InnoDB使用的行级锁定
mysql>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 从系统启动到现在总共等待的次数
总结:MYISAM引擎的并发支持不好,如果出现高并发导致锁定征用可能会导致系统性能急剧下降。