热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用mysqladminext监控MySQL运行状态

本文介绍如何通过mysqladminext命令监控MySQL数据库的运行状态,包括性能指标的实时查看和分析。

mysqladmin是MySQL的一个重要客户端工具,除了用于常规的数据库管理操作如关闭数据库外,还能够帮助我们深入了解MySQL的运行状态。本文将重点介绍如何使用mysqladmin extended-status(简称ext)来监控MySQL的性能指标。

通过执行mysqladmin extended-status命令,用户可以获得类似于show global status的输出,显示MySQL的所有性能指标。由于大多数指标为累计值,为了获取当前的实时状态,可以通过计算两次查询之间的差异值来实现。mysqladmin extended-status命令提供了一个方便的选项-r(--relative),配合-i(--sleep)设置刷新频率,可以方便地查看实时变化的数据。例如,下面的命令每秒更新一次MySQL的性能指标:

mysqladmin -uroot -r -i 1 -pxxx extended-status

此外,结合grep命令,我们可以筛选出特定的性能指标,例如查询次数、插入次数等:

mysqladmin -uroot -r -i 1 -pxxx extended-status | grep 'Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete'

为了使输出更加直观,还可以使用awk命令添加时间戳,并进一步美化输出格式。例如,下面的命令不仅显示了时间,还对关键性能指标进行了格式化输出:

mysqladmin -uroot -p -h127.0.0.1 -P3306 -r -i 1 ext | awk -F'|' '{if($2 ~ /Variable_name/){print "<-----" strftime("%H:%M:%S") "----->";} if($2 ~ /Questions|Queries|Innodb_rows|Com_select|Com_insert|Com_update|Com_delete|Innodb_buffer_pool_read_requests/){print $2 $3;}}'

对于更复杂的输出需求,可以编写更为复杂的awk脚本,以获得更加详细和友好的输出结果。下面是一个示例脚本,它不仅显示了基本的时间和QPS(每秒查询数),还包括了各种SQL操作的统计以及InnoDB行操作和缓冲池读取的详细情况:

mysqladmin -P3306 -uroot -p -h127.0.0.1 -r -i 1 ext | awk -F'|' 'BEGIN{ count=0; } { if($2 ~ /Variable_name/ && ++count == 1){print "---|---|--- MySQL Command Status ---|--- Innodb row operation ---|--- Buffer Pool Read ---";print "--Time--|--QPS--|select insert update delete|read inserted updated deleted|logical physical";} else if ($2 ~ /Queries/){queries=$3;} else if ($2 ~ /Com_select/){com_select=$3;} else if ($2 ~ /Com_insert/){com_insert=$3;} else if ($2 ~ /Com_update/){com_update=$3;} else if ($2 ~ /Com_delete/){com_delete=$3;} else if ($2 ~ /Innodb_rows_read/){innodb_rows_read=$3;} else if ($2 ~ /Innodb_rows_deleted/){innodb_rows_deleted=$3;} else if ($2 ~ /Innodb_rows_inserted/){innodb_rows_inserted=$3;} else if ($2 ~ /Innodb_rows_updated/){innodb_rows_updated=$3;} else if ($2 ~ /Innodb_buffer_pool_read_requests/){innodb_lor=$3;} else if ($2 ~ /Innodb_buffer_pool_reads/){innodb_phr=$3;} else if ($2 ~ /Uptime/ && count >= 2){printf("%s |%9d",strftime("%H:%M:%S"),queries); printf("|%6d %6d %6d %6d",com_select,com_insert,com_update,com_delete); printf("|%6d %8d %7d %7d",innodb_rows_read,innodb_rows_inserted,innodb_rows_updated,innodb_rows_deleted); printf("|%10d %11d\n",innodb_lor,innodb_phr);}}'

以上脚本的输出示例:

---|---|--- MySQL Command Status ---|--- Innodb row operation ---|--- Buffer Pool Read ---
--Time--|--QPS--|select insert update delete|read inserted updated deleted|logical physical
10:37:13 | 2231| 274 214 70 0| 4811 160 71 0| 4146 0
10:37:14 | 2972| 403 256 84 23| 2509 173 85 23| 4545 0
10:37:15 | 2334| 282 232 66 1| 1266 154 67 1| 3543 0
10:37:15 | 2241| 271 217 66 0| 1160 129 66 0| 2935 0
10:37:17 | 2497| 299 224 97 0| 1141 149 95 0| 3831 0
10:37:18 | 2871| 352 304 74 23| 8202 226 73 23| 6167 0
10:37:19 | 2441| 284 233 82 0| 1099 121 78 0| 3292 0
10:37:20 | 2342| 279 242 61 0| 1083 224 61 0| 3366 0


推荐阅读
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • MySQL中枚举类型的所有可能值获取方法
    本文介绍了一种在MySQL数据库中查询枚举(ENUM)类型字段所有可能取值的方法,帮助开发者更好地理解和利用这一数据类型。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
author-avatar
yaunye
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有