在 MySQL 中,进行性能监控可以通过多种工具和方法实现,以下是常用的性能监控方式:
通过 SHOW STATUS 命令可以查看 MySQL 服务器的各类运行状态指标:
SHOW GLOBAL STATUS;
SHOW GLOBAL STATUS LIKE 'Threads%';
SHOW GLOBAL STATUS LIKE 'Connections';
SHOW GLOBAL STATUS LIKE 'Qcache%';
SHOW GLOBAL STATUS LIKE 'Innodb_data_read%';
SHOW GLOBAL STATUS LIKE 'Innodb_data_written%';
慢查询日志用于记录执行时间超过指定阈值的 SQL 语句,是优化查询性能的重要工具:
SHOW VARIABLES LIKE 'slow_query_log%';
SHOW VARIABLES LIKE 'long_query_time';
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
通过 SHOW PROCESSLIST 查看当前正在执行的线程,可及时发现阻塞或耗时操作:
SHOW FULL PROCESSLIST;
SELECT * FROM information_schema.processlist WHERE state LIKE 'Locked';
分析 SQL 语句的执行计划,判断是否使用索引、表连接方式等:
EXPLAIN SELECT * FROM users WHERE age > 30;
EXPLAIN ANALYZE SELECT * FROM orders JOIN users ON orders.user_id = users.id;
-
Percona Monitoring and Management (PMM):开源监控平台,提供 MySQL 性能指标可视化
-
MySQL Workbench:官方工具,内置性能监控仪表盘
-
Prometheus + Grafana:通过 mysqld_exporter 收集指标,实现自定义监控面板
-
pt-query-digest(Percona Toolkit):分析慢查询日志,生成详细报告
监控时应重点关注以下指标:
-
连接数:
Threads_connected、Max_used_connections
-
查询性能:
Queries、Questions、Slow_queries
-
缓存命中率:
Key_read_hit_rate = (1 - Key_reads / Key_read_requests) * 100%
-
InnoDB 状态:
SHOW ENGINE INNODB STATUS(查看锁等待、缓冲池使用等)
通过结合以上方法,可以全面掌握 MySQL 服务器的运行状态,及时发现并解决性能瓶颈。