方法一:客戶端內建 status 命令(最快)
mysql> \s
-- 或
mysql> status
-- 輸出示例:
--------------
mysql Ver 14.14 Distrib 5.7.33, for Linux (x86_64)
Connection id: 12345
Current database: test_db
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.33-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /tmp/mysql.sock
Uptime: 6 hours 30 min 16 sec
Threads: 2 Questions: 224857636 Slow queries: 229 Opens: 1740 Flush tables: 1 Open tables: 735 Queries per second avg: 137.566
--------------
關鍵指標:Uptime、Threads、Questions、Slow queries、QPS。
方法二:SHOW GLOBAL STATUS 精確獲取
-- 核心狀態變量
SHOW GLOBAL STATUS LIKE 'Uptime'; -- 運行秒數
SHOW GLOBAL STATUS LIKE 'Threads_%'; -- connected/running/cached/created
SHOW GLOBAL STATUS LIKE 'Questions'; -- 執行語句總數
SHOW GLOBAL STATUS LIKE 'Com_select'; -- SELECT 次數
SHOW GLOBAL STATUS LIKE 'Com_insert|Com_update|Com_delete'; -- 寫操作
SHOW GLOBAL STATUS LIKE 'Slow_queries'; -- 慢查詢數
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_%'; -- 緩存池命中/脏頁/讀寫
SHOW GLOBAL STATUS LIKE 'Handler_%'; -- 存儲引擎層操作計數
方法三:Performance Schema 深度觀測(5.6+)
-- 當前活躍會話
SELECT * FROM performance_schema.threads WHERE TYPE = 'FOREGROUND';
-- 當前執行 SQL
SELECT t.THREAD_ID, t.PROCESSLIST_ID, t.PROCESSLIST_USER, t.PROCESSLIST_HOST,
t.PROCESSLIST_DB, t.PROCESSLIST_COMMAND, t.PROCESSLIST_TIME,
t.PROCESSLIST_STATE, s.SQL_TEXT
FROM performance_schema.threads t
JOIN performance_schema.events_statements_current s ON t.THREAD_ID = s.THREAD_ID
WHERE t.TYPE = 'FOREGROUND';
-- 等待事件分析(鎖、IO、鎖等待)
SELECT EVENT_NAME, COUNT_STAR, SUM_TIMER_WAIT/1e12 AS total_sec
FROM performance_schema.events_waits_summary_global_by_event_name
ORDER BY SUM_TIMER_WAIT DESC LIMIT 20;
方法四:SHOW PROCESSLIST / SHOW ENGINE INNODB STATUS
-- 當前所有線程
SHOW FULL PROCESSLIST;
-- 關鍵列:Id, User, Host, db, Command, Time, State, Info
-- InnoDB 內部狀態(事務、鎖、死鎖、插入緩衝、redo log、檢查點)
SHOW ENGINE INNODB STATUS\G
方法五:可視化/監控工具(生產推薦)
| 工具 | 特點 | 部署複雜度 |
| phpMyAdmin 狀態頁 | 圖形化、易讀、含優化建議 | 低(需 Web 訪問) |
| Prometheus + mysqld_exporter + Grafana | 標準化指標、告警、歷史趨勢、多實例 | 中 |
| Percona Monitoring and Management (PMM) | 開箱即用、QAN 查詢分析、InnoDB 圖表 | 中(Docker 一鍵) |
| Zabbix 模板 | 企業級監控體系整合 | 高 |
| pt-stalk / pt-query-digest | 故障現場自動採集、離線分析 | 低(單機工具) |
關鍵指標閾值參考
| 指標 | 健康範圍 | 告警閾值 | 說明 |
| Threads_connected / max_connections | < 70% | > 85% | 連接池配置不足或洩漏 |
| Slow_queries / Questions | < 1% | > 5% | 慢查詢佔比過高 |
| Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests | < 1% | > 5% | 緩存命中率低,需擴容 |
| Innodb_row_lock_waits | 低 | 持續增長 | 行鎖競爭激烈 |
| Aborted_connects | 0 | > 0 | 連接被拒/中斷,排查網絡/認證 |