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

MySQL 服務器狀態分析實戰:SHOW STATUS、慢查詢、SHOW PROCESSLIST 三板斧

     編輯:MySQL 綜合教學

一、獲取服務器整體狀態

SHOW [SESSION|GLOBAL] STATUS;
-- 或
USE information_schema;
SELECT * FROM SESSION_STATUS;

MySQL 5.6.21 返回 341 個狀態變量。詳細含義參考:MySQL 狀態變量全解析

二、SQL 操作計數器

SHOW STATUS LIKE 'Com_%';
-- 或
SELECT * FROM SESSION_STATUS WHERE VARIABLE_NAME LIKE 'Com_%';

共 142 個計數器。實測:

ALTER TABLE test ADD Name CHAR(10) NOT NULL;
SHOW STATUS LIKE 'Com_alter%';
-- Com_alter_table 從 0 變 1

Com_ 計數器 執行 ALTER 後

核心計數器

變量含義
Com_selectSELECT 執行次數
Com_insertINSERT 次數(批量算 1 次)
Com_updateUPDATE 次數
Com_deleteDELETE 次數
Com_commit事務提交次數
Com_rollback事務回滾次數

InnoDB 行級計數器

SHOW STATUS LIKE 'Innodb_rows%';

三、定位低效 SQL

3.1 慢查詢日誌

設置 long_query_time=0.01 記錄所有超閾值查詢。日誌含:時間、用戶、耗時、鎖時長、掃描/返回行數。

慢查詢日誌示例

3.2 實時進程列表

SHOW PROCESSLIST;

關鍵列:

  • Command:Sleep/Query/Connect
  • Time:持續秒數,重點關注長時間 Query
  • State:如 Waiting for table lock、Sending data、Copying to tmp table
  • Info:具體 SQL 文本

PROCESSLIST

3.3 第三方監控

推薦:Prometheus + Grafana、Percona Monitoring and Management (PMM)、Zabbix 模板。

四、其他關鍵狀態

  • Connections:總連接數
  • Slow_queries:慢查詢計數
  • Innodb_buffer_pool_*:緩存池命中率、脏页、读写
  • Innodb_data_*:數據文件讀寫量

總結

性能分析三步走:SHOW STATUS 看宏觀計數 → SHOW PROCESSLIST 看實時阻塞 → 慢查詢日誌看歷史慢 SQL。持續觀察趨勢比單點數值更有價值。

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