首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL SHOW STATUS 完整解析:關鍵效能指標一覽

     編輯:MySQL 綜合教學

前言

SHOW STATUS 是 MySQL 內建的「儀表板」,能即時吐出數百項伺服器層級與會話層級的計數器。善用這些指標,可快速判斷資料庫是否健康、瓶頸在哪裡。本文將完整輸出結果分類解讀,並標出運維最關心的核心指標。

指令與輸出樣本

mysql> SHOW STATUS;
+-----------------------------------+----------+
| Variable_name                     | Value    |
+-----------------------------------+----------+
| Aborted_clients                   | 0        |
| Aborted_connects                  | 0        |
| Bytes_received                    | 115      |
| Bytes_sent                        | 180      |
| Com_select                        | 1        |
| Com_insert                        | 0        |
| Com_update                        | 0        |
| Com_delete                        | 0        |
| Connections                       | 2        |
| Created_tmp_tables                | 1        |
| Handler_read_key                  | 0        |
| Handler_read_next                 | 0        |
| Innodb_buffer_pool_pages_data     | 67       |
| Innodb_buffer_pool_pages_free     | 2493     |
| Innodb_buffer_pool_pages_total    | 2560     |
| Innodb_buffer_pool_read_requests  | 635      |
| Innodb_buffer_pool_reads          | 16       |
| Key_read_requests                 | 0        |
| Key_reads                         | 0        |
| Max_used_connections              | 1        |
| Open_tables                       | 6        |
| Opened_tables                     | 0        |
| Qcache_hits                       | 0        |
| Queries                           | 2        |
| Questions                         | 2        |
| Slow_queries                      | 0        |
| Threads_connected                 | 1        |
| Threads_created                   | 1        |
| Threads_running                   | 1        |
| Uptime                            | 181      |
+-----------------------------------+----------+

核心指標分類速查

1. 連線與執行緒

  • Connections:啟動以來嘗試連線總數(含失敗)
  • Max_used_connections:歷史峰值同時連線數,評估 max_connections 設定是否足夠
  • Threads_connected:當前開啟的連線數
  • Threads_running:當前真正在執行查詢的執行緒數(非 Sleep)
  • Aborted_connects:連線嘗試失敗次數,若暴增需查防火牆、DNS、錯誤密碼等

2. 查詢與命令計數

  • Questions:客戶端發送的語句數(不含預處理內部指令)
  • Queries:伺服器實際執行的語句數(含預處理、存儲程序內部呼叫)
  • Com_select / Com_insert / Com_update / Com_delete:四大 DML 執行次數,計算 QPS、寫入比例
  • Slow_queries:慢查詢計數,配合 long_query_time 判斷是否需優化

3. InnoDB 緩衝池(Buffer Pool)

  • Innodb_buffer_pool_pages_total / data / free:總頁數、髒頁數、空閒頁數,推算命中率
  • Innodb_buffer_pool_read_requests:邏輯讀請求(記憶體)
  • Innodb_buffer_pool_reads:物理讀請求(磁碟)
  • 命中率 = 1 - (Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests),建議 > 99%

4. MyISAM Key Cache(舊表仍在用時)

  • Key_read_requests / Key_reads:同理計算索引命中率
  • Key_blocks_unused / used / not_flushed:評估 key_buffer_size 是否過大/過小

5. 暫存表與排序

  • Created_tmp_tables / Created_tmp_disk_tables:記憶體暫存表 vs 磁碟暫存表比例,磁碟比例高需調大 tmp_table_size、max_heap_table_size
  • Sort_scan / Sort_range / Sort_merge_passes:排序行為,merge passes 多代表排序緩衝不足

6. 表鎖與開啟表

  • Table_locks_waited / Table_locks_immediate:等待鎖比例,MyISAM 易成瓶頸
  • Open_tables / Opened_tables:表快取命中率,Opened_tables 快速增長需調大 table_open_cache

實戰:一條 SQL 算出關鍵健康度

SELECT
  VARIABLE_NAME,
  VARIABLE_VALUE,
  CASE
    WHEN VARIABLE_NAME = 'Innodb_buffer_pool_read_requests' THEN @read_req := VARIABLE_VALUE
    WHEN VARIABLE_NAME = 'Innodb_buffer_pool_reads' THEN @read_disk := VARIABLE_VALUE
  END
FROM performance_schema.global_status
WHERE VARIABLE_NAME IN ('Innodb_buffer_pool_read_requests','Innodb_buffer_pool_reads');
SELECT 1 - @read_disk / @read_req AS buffer_pool_hit_rate;

小結

SHOW STATUS 輸出龐大,但只要鎖定上述 20 個核心指標,即可覆蓋 90% 的日常巡檢與效能排查需求。建議寫成監控腳本定時采集,配合 Grafana/Prometheus 視覺化,做到趨勢可觀測、異常可告警。

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