【高性能MySQL】诊断间歇性问题SHOW GLOBAL STATUS
【高性能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 的“尖刺”或者“凹陷”。下面是输出的命令:
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组装电脑配置单推荐报价格
上传时间: 2025-07-21 21:48:31
推荐阅读
留言与评论(共有 6 条评论) |
本站网友 win7虚拟光驱下载 | 22分钟前 发表 |
这个命令每秒捕获一次SHOW GLOBAL STATUS的数据 | |
本站网友 女孩子学化妆好吗 | 12分钟前 发表 |
列举一些曾经遇到的间歇性数据库性能问题的实际案例:memcached缓存中的一些重要条目过期 | |
本站网友 危险的气味 | 14分钟前 发表 |
Questi和Queries 的“尖刺”或者“凹陷” | |
本站网友 低碳生活资料 | 10分钟前 发表 |
加油! | |
本站网友 1939 | 21分钟前 发表 |
每天进步一点 |