萬盛學電腦網

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

MySQL SHOW STATUS 實戰:監控服務器狀態、識別性能瓶頸、指導參數調優

SHOW STATUS 提供 300+ 運行時計數器,是 MySQL 運行健康度的「儀表盤」。本文講解會話/全局兩種統計範圍、高頻監控指標分類、典型異常模式識別、參數調優映射表,讓你用數據說話,精準調優。

統計範圍:SESSION vs GLOBAL

-- 默認 SESSION:僅當前連接
SHOW STATUS LIKE 'Com_select';

-- GLOBAL:實例啟動以來所有連接累計
SHOW GLOBAL STATUS LIKE 'Com_select';

⚠️ 生產調優 必須用 GLOBAL,SESSION 僅適合當前會話調試。

核心監控指標分類速查

1. 連接與線程

變量含義異常信號對應參數
Threads_connected當前打開連接數接近 max_connectionsmax_connections
Threads_running非 Sleep 活躍線程持續高位 = 高併發/慢查詢thread_pool (Percona)
Threads_created歷史創建線程數增長快 = 線程池/緩存不足thread_cache_size
Threads_cached緩存中空閒線程為 0 且 Created 增長快thread_cache_size
Connections嘗試連接總數(含失敗)Aborted_connects 高 = 網絡/認證問題back_log
Aborted_connects連接失敗數> 0 需排查-

2. 查詢執行統計

變量含義衍生指標
Com_selectSELECT 執行次數QPS 基線
Com_insert / Com_update / Com_delete寫操作次數寫入比例 = (Ins+Upd+Del)/Questions
Questions發送給 Server 的語句總數總 QPS
Slow_queries慢查詢計數> 0 需分析慢日志

3. 表鎖與 IO

變量含義異常信號
Table_locks_immediate立即獲取鎖次數-
Table_locks_waited等待鎖次數> 0 且高 = 鎖爭用,優化查詢/拆表/讀寫分離
Innodb_row_lock_waitsInnoDB 行鎖等待次數高 = 熱點行爭用
Innodb_row_lock_time_avg平均行鎖等待毫秒> 50ms 需關注

4. 緩存命中率(關鍵健康度)

-- Key Buffer (MyISAM)
Key_read_requests / Key_reads  -- 命中率 = 1 - Reads/Requests,目標 > 99%

-- InnoDB Buffer Pool
Innodb_buffer_pool_read_requests / Innodb_buffer_pool_reads  -- 目標 > 99.9%

-- Table Open Cache
Open_tables / Opened_tables  -- Opened 增長快 = table_open_cache 過小

5. 臨時表與排序

  • Created_tmp_tables / Created_tmp_disk_tables:磁盤臨時表比例 > 10% 需調大 tmp_table_size/max_heap_table_size
  • Sort_scan / Sort_range:全表排序 vs 索引範圍排序

典型異常模式 → 調優動作映射

現象可能原因調優動作
Threads_created 快速增長thread_cache_size 過小調大至 50-200(視併發)
Table_locks_waited 高MyISAM 表鎖爭用 / 長事務遷移 InnoDB、拆大表、優化慢查詢
Created_tmp_disk_tables 高臨時表超內存落盤調大 tmp_table_size、優化 GROUP BY/ORDER BY
Key_reads / Key_read_requests > 1%key_buffer_size 不足調大 key_buffer_size(MyISAM)
Innodb_buffer_pool_reads 高Buffer Pool 過小調大 innodb_buffer_pool_size(建議 70-80% 內存)
Handler_read_rnd 高大量全表掃描 / 錯誤 JOIN加索引、改寫 JOIN 順序
Slow_queries 增長慢查詢增多分析慢日志、優化 Top SQL

自動化監控建議

  • Prometheus + mysqld_exporter 採集 GLOBAL STATUS
  • Grafana 構建儀表板:QPS、併發、緩存命中率、鎖等待、臨時表比率
  • 告警規則:Threads_connected / max_connections > 0.8、Slow_queries 5min 增長 > 10

定期 FLUSH STATUS 歸零計數器(僅影響 SESSION,GLOBAL 不受影響),配合部署變更時間點,量化優化效果。

copyright © 萬盛學電腦網 all rights reserved