萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 運行狀態查看指南:命令行、狀態變量、性能架構與可視化工具

方法一:客戶端內建 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_connects0> 0連接被拒/中斷,排查網絡/認證
copyright © 萬盛學電腦網 all rights reserved