可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:

in mysql

可以通过检查table_locks_waited和table_locks_immediate状态变量来分析系统上的表锁定争夺:

mysql> show status like 'Table%';

+----------------------------+----------+

| Variable_name        | Value |

+----------------------------+----------+

| Table_locks_immediate | 105         |

| Table_locks_waited   | 3           |

+----------------------------+----------+

2 rows in set (0.00 sec)

如果Table_locks_waited的值比较高,则说明存在着较严重的表级锁争用情况。这时,需要我们对应用做进一步的检查,来确定问题所在。

Table_locks_immediate 指的是能够立即获得表级锁的次数,而Table_locks_waited指的是不能立即获取表级锁而需要等待的次数。如果 Table_locks_waited的值比较大的话,并且你遇到了性能问题,你可能希望将大表切分成小表;例如,你可以为一个定制模块创建一个专有的缓存(cache)表,或者通过其它方式来减小表的大小,或者降低表级锁命令调用的频率。对于一些表,比如cache_*,Watchdog, 和 accesslog表,减少表的大小的一种方式是减少数据的生命周期。
0 Comments