您现在的位置是:首页 > 编程 > 

【高性能MySQL】诊断间歇性问题SHOW GLOBAL STATUS

2025-07-26 15:38:22
【高性能MySQL】诊断间歇性问题SHOW GLOBAL STATUS 什么是MySQL间歇性问题?间歇性的问题比如系统偶尔停顿或者慢查询,很难诊断。有些幻影问题只在没有注意到的时候才发生,而且无法重现。诊断这样的问题往往要花费很多时间。列举一些曾经遇到的间歇性数据库性能问题的实际案例:memcached缓存中的一些重要条目过期,导致大量请求落到MySQL以重新生成缓存条目。DS查询偶尔会超时现

【高性能MySQL】诊断间歇性问题SHOW GLOBAL STATUS

什么是MySQL间歇性问题?

间歇性的问题比如系统偶尔停顿或者慢查询,很难诊断。有些幻影问题只在没有注意到的时候才发生,而且无法重现。诊断这样的问题往往要花费很多时间。

列举一些曾经遇到的间歇性数据库性能问题的实际案例:

  • memcached缓存中的一些重要条目过期,导致大量请求落到MySQL以重新生成缓存条目。
  • DS查询偶尔会超时现象。
  • 可能是由于互斥锁争用,或者内部删除查询缓存的算法效率太低的缘故,MySQL的查询缓存有时候会导致服务有短暂的停顿。
  • 当并发超过某个阈值时,InnoDB的扩展性限制导致查询计划的优化需求很长的时间。

如何判断是单条查询问题还是服务器问题?

可以通过下面技术来解决:

1、使用SHOW GLOBAL STATUS

以高频率的执行一次SHOW GLOBAL STATUS命令来捕获Threads_running、Threads_connected、Questi和Queries 的“尖刺”或者“凹陷”。下面是输出的命令:

代码语言:sql复制
mysqladmin -u USER -p extended-status -i1 | awk ' /Queries/{q=$4-qp; qp=$4} /Threads_connected/{tc=$4} /Threads_running/{printf "%5d %5d %5d\n", q, tc, $4}'
-- 输出结果
799  16  7
768  14  9
829  14  7
684  14  7
109  15  24
188  14  1
178  14  28
1178 14  7
1152 14  7
1241 15  7 

请注意替换 USER 为您的 MySQL 用户名。

这个命令每秒捕获一次SHOW GLOBAL STATUS的数据,该命令的工作原理如下:

mysqladmin extended-status 获取 MySQL 的扩展状态变量。

-i1 每一秒执行一次。

awk 程序解析这些状态变量的输出:

  • /Queries/ 匹配包含 "Queries" 的行,并计算自上次以来的查询增量。
  • /Threads_connected/ 匹配包含 "Threads_connected" 的行,并获取当前连接的线程数。
  • /Threads_running/ 匹配包含 "Threads_running" 的行,并打印出查询增量、连接的线程数以及正在运行的线程数。

如何解析上述的结果现象。猜测有两个原因的可能性比较大。其中之一是服务器内部碰到了某种瓶颈,导致新查询在开始执行前因为需要获取老查询正在等待的锁而造成堆积。另一个原因是服务器突然遇到了大量查询请求的冲击,比如memcached突然失效导致的查询风暴。

还有两种技术也可以判断:SHOW PROCESSLIST 、使用查询日志。我们之后再介绍。请关注我!

每天学习一点,每天进步一点,加油!

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1178323.html

相关标签:无
上传时间: 2025-07-21 21:48:31
留言与评论(共有 6 条评论)
本站网友 win7虚拟光驱下载
22分钟前 发表
这个命令每秒捕获一次SHOW GLOBAL STATUS的数据
本站网友 女孩子学化妆好吗
12分钟前 发表
列举一些曾经遇到的间歇性数据库性能问题的实际案例:memcached缓存中的一些重要条目过期
本站网友 危险的气味
14分钟前 发表
Questi和Queries 的“尖刺”或者“凹陷”
本站网友 低碳生活资料
10分钟前 发表
加油!
本站网友 1939
21分钟前 发表
每天进步一点