`

系统锁定争用情况查询

 
阅读更多

 

系统锁定争用情况查询

分类: MySQL 3人阅读 评论(0) 收藏 举报

      MySQL实现的表级别锁定的争用状态变量

 

  1. show status like 'table%';  
  2. Variable_name           Value  
  3. Table_locks_immediate   19  
  4. Table_locks_waited  0  

 

      这里有两个状态变量记录MySQL内部表级锁定的情况,两个变量说明如下:

      Table_locks_immediate:产生表级锁定的次数;

      Table_locks_waited:出现表级锁定争用而发生等待的次数。

      两个状态值都是从系统启动后开始记录,每出现一次对应的事件则数量加1。如果这里的Table_locks_waited状态值比较高,那么说明系统中表级锁定争用现象比较严重,就须要进一步分析为什么会为有较多的锁定资源争用了。

      对于InnoDB所使用的行级锁定,系统是通过另外一组更为详细的状态变量来记录的。

 

  1. show status like 'innodb_row_lock%';  
  2. Variable_name   Value  
  3. Innodb_row_lock_current_waits   0  
  4. Innodb_row_lock_time    0  
  5. Innodb_row_lock_time_avg    0  
  6. Innodb_row_lock_time_max    0  
  7. Innodb_row_lock_waits   0  

 

      InnoDB的行级锁定状态变量不仅记录了锁定等待的次数,还记录了锁定总时长、每次平均时长、以及最大时长,此外还有一个非累计状态量显示了当前正在等待的数量。对各个状态的说明如下:

      Innodb_row_lock_current_waits:当前正在等待锁定的数量;
      Innodb_row_lock_time :从系统启动到现在锁定的总时间长度;
      Innodb_row_lock_time_avg :每次等待所花平均时间;
      Innodb_row_lock_time_max:从系统启动到现在等待最长的一次所花的时间;
      Innodb_row_lock_waits :从系统启动到现在总共等待的次数。

      对于这5个状态变量,比较重要的是 Innodb_row_lock_time_avg,Innodb_row_lock_waits 以及Innodb_row_lock_time这三项。尤其是当等待次数很高,而且每次等待时长也不小的时候,就须要分析系统中为什么又如此多的等待,然后根据分析结果着手制定优化计划。

      此外,InnoDB除了提供这5个系统状态变量,还提供了其他更为丰富的及时状态信息,show innodb status;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics