萬盛學電腦網

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

MySQL SHOW STATUS 完整狀態變數參考表 (含 InnoDB 核心指標)

SHOW STATUS 回傳上百個伺服器狀態變數,本文整理完整列表並標註**核心監控指標**,適合 DBA 建立監控儀表板、效能基準線、異常告警閾值。

連線與執行緒

變數含義告警建議
Connections嘗試連線總數 (含失敗)突增 → 連線風暴/應用洩漏
Max_used_connections歷史峰值同時連線接近 max_connections 80% 擴容
Threads_connected目前開啟連線數持續高位 → 連線池洩漏
Threads_running正在執行查詢的執行緒> CPU 核心數 → 積壓
Aborted_connects失敗連線嘗試> 0 即關注,網路/認證問題
Aborted_clients異常中斷的客戶端同上

查詢統計 (Com_*)

變數含義
Com_selectSELECT 執行次數
Com_insert / _update / _delete寫入操作次數
Com_commit / _rollback事務提交/回滾
Com_prepare_sql / _stmt_executePrepared Statement 使用
Qcache_hits / _inserts / _lowmem_prunes查詢快取命中/插入/淘汰 (5.7 已移除)

InnoDB 核心指標 (重點監控)

變數含義健康基準
Innodb_buffer_pool_pages_data含資料的頁數佔總頁數 > 90% 佳
Innodb_buffer_pool_pages_free空閒頁數過低 → 擴大 buffer_pool
Innodb_buffer_pool_read_requests邏輯讀請求基準值
Innodb_buffer_pool_reads物理讀 (未命中)/ read_requests < 1%
Innodb_buffer_pool_wait_free等待空閒頁次數> 0 即壓力大
Innodb_log_waits等待記錄檔刷新> 0 → 擴大 log_file_size
Innodb_row_lock_waits列鎖等待次數高 → 熱點行/長事務
Innodb_deadlocks死鎖次數> 0 需檢查應用邏輯

IO 與臨時表

變數含義異常判讀
Created_tmp_tables記憶體臨時表數正常
Created_tmp_disk_tables磁碟臨時表數/ tmp_tables > 10% → 調大 tmp_table_size
Handler_read_rnd_next全表掃描次數高 → 缺索引/查詢優化
Sort_merge_passes排序溢寫磁碟次數> 0 → 調大 sort_buffer_size

實用監控查詢

-- 即時 QPS/TPS
SELECT 
    VARIABLE_VALUE INTO @q1 FROM GLOBAL_STATUS WHERE VARIABLE_NAME='Questions';
SELECT SLEEP(1);
SELECT 
    VARIABLE_VALUE INTO @q2 FROM GLOBAL_STATUS WHERE VARIABLE_NAME='Questions';
SELECT (@q2 - @q1) AS QPS;

-- 緩衝池命中率
SELECT 
    (1 - Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests) * 100 AS hit_rate_pct
FROM information_schema.GLOBAL_STATUS;

完整變數清單請參考官方文件,本文列出 200+ 變數中的核心 50+,建議納入 Prometheus/Grafana/Zabbix 監控體系。

copyright © 萬盛學電腦網 all rights reserved