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

MySQL 效能優化:透過 SHOW STATUS 掌握 SQL 執行頻率

     編輯:MySQL 資料庫相關知識

核心命令

-- Session 級(當前連線)
SHOW SESSION STATUS LIKE 'Com_%';

-- Global 級(啟動至今,預設)
SHOW GLOBAL STATUS LIKE 'Com_%';

關鍵計數器對照表

變數含義累計邏輯
Com_selectSELECT 執行次數每次查詢 +1
Com_insertINSERT 執行次數批次 INSERT 只 +1
Com_updateUPDATE 執行次數每次執行 +1
Com_deleteDELETE 執行次數每次執行 +1
Com_commit事務提交次數
Com_rollback事務回滾次數頻繁回滾暗示應用邏輯問題
Com_replaceREPLACE 執行次數
Com_insert_selectINSERT ... SELECT 次數

InnoDB 專用行級計數器(更精確)

變數含義
Innodb_rows_readSELECT 返回總行數
Innodb_rows_insertedINSERT 插入總行數
Innodb_rows_updatedUPDATE 更新總行數
Innodb_rows_deletedDELETE 刪除總行數

差異:Com_* 計次數,Innodb_rows_* 計行數。批次操作時差異明顯。

實戰分析範例

# 取得關鍵指標快照
mysql -e "SHOW GLOBAL STATUS" | grep -E "Com_select|Com_insert|Com_update|Com_delete|Innodb_rows_|Questions|Queries|Slow_queries|Connections|Uptime"

輸出解讀

  • Questions:客戶端發送的語句數(含預處理)
  • Queries:實際執行的語句數(含存儲過程內部)
  • Slow_queries:慢查詢次數(配合 long_query_time)
  • Connections:嘗試連線總數
  • Uptime:服務運行秒數

判斷讀寫比例與引擎選型

# 計算 QPS
Questions / Uptime

# 讀寫比
Com_select / (Com_insert + Com_update + Com_delete)

# InnoDB 行級讀寫比
Innodb_rows_read / (Innodb_rows_inserted + Innodb_rows_updated + Innodb_rows_deleted)
  • 讀多寫少:MyISAM(舊)、InnoDB(現代首選)、考慮讀寫分離
  • 寫多/事務重:InnoDB 唯一選擇(行鎖、MVCC、崩潰恢復)
  • 回滾頻繁:檢查應用邏輯、事務邊界、死鎖處理

監控整合建議

  1. Prometheus + mysqld_exporter:自動採集 global_status、global_variables、innodb_metrics。
  2. Grafana 儀表板:QPS、TPS、慢查詢趨勢、連線數、緩存命中率。
  3. 告警規則:Slow_queries 突增、Com_rollback 異常、Threads_connected 接近 max_connections。

結語

SHOW [GLOBAL|SESSION] STATUS 是零成本、零侵入的資料庫負載剖析入口。定期採集、趨勢分析、結合 EXPLAIN、slow log、performance_schema,構建全方位觀測體系,讓優化有據可依。

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