重点关注QPS、TPS、Threads_connected/Threads_running、InnoDB缓冲池命中率、Slow_queries等指标;常用mysqladmin、SHOW STATUS、Performance Schema等工具监控;需结合趋势分析隐患,如连接泄漏、IO瓶颈、慢SQL引入等。

监控 MySQL 性能指标和分析运行状态,核心在于掌握关键指标含义、选择合适工具、建立持续观测机制,而非临时查一次就结束。
重点关注的性能指标有哪些
以下指标直接影响响应速度、稳定性与扩容决策:
- QPS(Queries Per Second)与TPS(Transactions Per Second):反映整体负载压力。突增可能预示慢查询堆积或业务高峰,骤降则需排查连接中断或服务异常。
- Threads_connected / Threads_running:前者是当前总连接数,后者是真正正在执行的线程数。若后者长期接近或等于前者,说明大量请求被阻塞(如锁等待、IO瓶颈),需检查 innodb_row_lock_waits 或 show processlist。
- InnoDB Buffer Pool 命中率:计算公式为 (1 - Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests) × 100%。低于 95% 通常表明缓冲池偏小或存在大量全表扫描,应优化查询或调大 innodb_buffer_pool_size。
- Slow_queries:开启 slow_query_log 后统计的慢查询数量。配合 long_query_time(建议设为 1s)和 log_queries_not_using_indexes,可定位低效 SQL。
- Key_reads / Key_read_requests(仅 MyISAM 场景):命中率过低说明索引缓存不足,但多数生产环境已用 InnoDB,此项优先级较低。
常用监控手段与操作方法
不依赖商业平台,也能快速掌握数据库状态:
- mysqladmin 命令行工具:执行 mysqladmin -u root -p extended-status -r -i 2 | grep -E "Threads_connected|Questions|Slow_queries" 可每两秒刷新一次关键指标,适合临时排查。
- SHOW GLOBAL STATUS + SHOW GLOBAL VARIABLES:组合使用可计算动态比率(如缓冲池命中率),并核对配置是否生效(如 max_connections、wait_timeout)。
- Performance Schema(MySQL 5.6+):启用后可深入追踪语句执行耗时、锁等待、IO 分布等。例如:SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY SUM_TIMER_WAIT DESC LIMIT 5; 快速找出最耗时的 SQL 模板。
- information_schema.PROCESSLIST:实时查看连接状态,重点关注 State 列(如 Sending data、Copying to tmp table、Locked)及 Time 值,识别长事务或阻塞源头。
如何判断是否存在隐患
单看数字不够,要结合趋势与上下文:
- 连接数持续增长且不释放 → 检查应用是否未正确 close connection,或 wait_timeout 设置过大。
- Buffer Pool 命中率稳定在 99% 但写入延迟升高 → 可能是磁盘 IO 瓶颈(观察 iostat %util 和 await),而非内存问题。
- Slow_queries 持续增加,但 QPS 平稳 → 很可能是新上线功能引入了未加索引的 WHERE 条件或 JOIN 写法不当。
- InnoDB row lock waits 显著上升 → 查 show engine innodb status\G 中的 TRANSACTIONS 部分,定位死锁或热点行争用。
推荐的轻量级落地方式
无需部署整套 Prometheus + Grafana,也能形成有效监控闭环:
- 每日定时采集 mysqladmin ext -i1 -c3 的快照,保存到日志文件,用脚本比对变化幅度。
- 在业务低峰期执行 pt-query-digest 分析 slow log,生成 Top SQL 报告,同步给开发团队优化。
- 对主库设置阈值告警(如 Threads_running > 50、Buffer Pool 命中率 微信机器人简单实现。
- 将 information_schema.TABLES 中 DATA_LENGTH + INDEX_LENGTH 定期汇总,跟踪表膨胀趋势,提前规划归档或分区策略。











