首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL SHOW STATUS 核心參數深度解讀:從計數器到效能診斷

     編輯:MySQL 資料庫相關知識

SHOW [GLOBAL|SESSION] STATUS 輸出 300+ 計數器,是 MySQL 運行狀態的「體檢報告」。本文提煉 50+ 核心指標,按維度分類解讀,並給出異常閾值與排查方向,作為效能診斷速查字典。

連接與線程

變量範圍含義異常信號
ConnectionsGlobal嘗試連接總數(含失敗)短時激增 = 連接風暴/未用連接池
Max_used_connectionsGlobal歷史峰值併發連接數接近 max_connections 需擴容
Threads_connectedGlobal當前打開連接數持續高位 = 連接洩漏/池配置大
Threads_createdGlobal創建線程數(含緩存未命中)Threads_created/Connections > 0.1 → 增大 thread_cache_size
Threads_runningGlobal非睡眠狀態線程數瞬間飆升 = 積壓/慢查詢/鎖等待
Aborted_connectsGlobal連接握手失敗數網絡抖動/認證失敗/skip-name-resolve 未開
Aborted_clientsGlobal非正常斷開客戶端數客戶端超時殺進程/網絡中斷

查詢與緩存

變量範圍含義異常信號
QuestionsBoth發送給服務器的語句數QPS 基線
QueriesBoth執行的語句數(含存儲過程內部)Queries > Questions 正常
Slow_queriesBoth超過 long_query_time 的查詢數持續增長 = 需開啟慢查詢日志分析
Select_scanBoth全表掃描次數高 = 缺索引/條件不命中
Select_full_joinBoth無索引 JOIN 次數>0 立即檢查 JOIN 索引
Qcache_hitsGlobal查詢緩存命中數命中率 < 20% 考慮關閉 QC
Qcache_insertsGlobal新增緩存條目數
Qcache_lowmem_prunesGlobal因內存不足淘汰次數持續增 = 擴容或 FLUSH QUERY CACHE
Qcache_not_cachedGlobal不可緩存查詢數含非確定函數/大結果集

InnoDB 引擎核心

變量含義診斷方向
Innodb_buffer_pool_read_requests邏輯讀請求總數命中率 = 1 - Innodb_buffer_pool_reads / read_requests,<99% 需擴容 BP
Innodb_buffer_pool_reads物理讀頁數(未命中)
Innodb_buffer_pool_wait_free等待空閒頁數>0 = BP 太小或刷盤跟不上
Innodb_row_lock_waits行鎖等待次數高 = 熱點行併發衝突
Innodb_row_lock_time_avg平均鎖等待毫秒>10ms 需優化熱點事務
Innodb_rows_inserted/read/updated/deleted行級增刪改查計數業務流量基線
Innodb_data_pending_fsyncs待刷盤 fsync 數持續 >0 = I/O 瓶頸
Innodb_log_waits等待重做日志寫入次數>0 = innodb_log_file_size 太小

臨時表與排序

變量含義異常處理
Created_tmp_tables內存臨時表數正常
Created_tmp_disk_tables磁碟臨時表數Created_tmp_disk_tables / Created_tmp_tables > 0.1 → 擴大 tmp_table_size/max_heap_table_size 或優化 SQL 避免臨時表
Sort_merge_passes排序歸併次數高 = sort_buffer_size 不足導致多輪歸併
Sort_scan全表掃描排序次數高 = 缺索引/ORDER BY 無索引

表鎖與打開表

變量含義異常處理
Table_locks_waited等待表鎖次數MyISAM 高併發寫入典型問題,遷移 InnoDB
Table_locks_immediate立即獲取表鎖次數
Open_tables當前打開表數
Opened_tables歷史打開表數Opened_tables / Uptime > 2/sec → 擴大 table_open_cache
Open_table_definitions緩存 .frm 數同理擴大 table_definition_cache

網絡與傳輸

變量含義
Bytes_sent / Bytes_received發送/接收字節總量
Com_*各類命令執行計數(Com_select, Com_insert...)

實戰診斷三步法

  1. 基線建立: 穩定運行期采集 1 小時 SHOW GLOBAL STATUS 快照,記錄核心指標均值。
  2. 異常比對: 故障時再次采集,重點看 Threads_running、Slow_queries、Innodb_row_lock_waits、Created_tmp_disk_tables、Qcache_lowmem_prunes 是否偏離基線超 3 倍。
  3. 定向排查: 結合 SHOW PROCESSLIST、SHOW ENGINE INNODB STATUS、慢查詢日志、EXPLAIN 定位根因。

總結

SHOW STATUS 是 MySQL 的「生命體徵儀」。不必背誦 300+ 指標,**掌握 20 個核心計數器、建立業務基線、會看趨勢變化**,即可完成 80% 效能診斷。配合 pt-query-digest、pmm、grafana 可視化,讓數據庫狀態「可觀測、可預警、可回溯」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved