我是靠谱客的博主 无辜红酒,最近开发中收集的这篇文章主要介绍查看mysql锁情况的命令详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况

mysql> show status like 'InnoDB_row_lock%';
+-------------------------------+-------+
| Variable_name
| Value |
+-------------------------------+-------+
| InnoDB_row_lock_current_waits | 0
|
| InnoDB_row_lock_time
| 0
|
| InnoDB_row_lock_time_avg
| 0
|
| InnoDB_row_lock_time_max
| 0
|
| 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_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors 来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因。
锁冲突的表、数据行等,并分析锁争用的原因

2.内部锁资源争用情况

mysql> show status like 'table%';
+----------------------------+---------+
| Variable_name              | Value   |
+----------------------------+---------+
| Table_locks_immediate      | 100     |
| Table_locks_waited         | 11      |
+----------------------------+---------+

这里有两个状态变量记录MySQL内部表级锁定的情况,两个变量说明如下:
Table_locks_immediate:产生表级锁定的次数;
Table_locks_waited:出现表级锁定争用而发生等待的次数;

最后

以上就是无辜红酒为你收集整理的查看mysql锁情况的命令详解的全部内容,希望文章能够帮你解决查看mysql锁情况的命令详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部