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

MySQL 執行頻率監控指南:SHOW STATUS 核心指標解讀與引擎選型依據

     編輯:關於SqlServer

前言

掌握 SQL 執行頻率與類型分佈,是存儲引擎選型、索引優化、架構擴容的數據基礎。MySQL 透過 `SHOW [SESSION|GLOBAL] STATUS` 即時暴露服務器計數器,本文詳細解讀核心 `Com_*` 與 `Innodb_*` 指標,並說明如何據此判斷讀寫比例、選擇 InnoDB/MyISAM 及發現應用層問題。

一、 狀態變數作用域

  • SHOW SESSION STATUS:當前連線統計 (預設)。
  • SHOW GLOBAL STATUS:實例啟動以來累計統計。
  • 系統命令列:mysqladmin extended-status。

二、 核心 SQL 執行計數器 (Com_*)

變數含義累計邏輯
Com_selectSELECT 執行次數每次查詢 +1
Com_insertINSERT 執行次數批次插入僅 +1
Com_updateUPDATE 執行次數每次執行 +1
Com_deleteDELETE 執行次數每次執行 +1
Com_commit事務提交次數含隱式提交
Com_rollback事務回滾次數頻繁回滾提示應用邏輯/異常處理異常

應用: 計算 `Com_update / Com_select` 比例,判斷讀寫負載特徵。更新密集型負載傾向選 InnoDB (行鎖、MVCC、崩潰恢復);純讀/多讀少寫 可考慮 MyISAM (全表鎖、無事務開銷、全文索引舊版優勢)。

三、 InnoDB 行級操作計數器 (精確到行)

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

差異:`Com_*` 計「語句次數」,`Innodb_rows_*` 計「影響行數」。批次操作差異巨大,結合分析可見平均每語句影響行數。

四、 基礎健康度指標

  • Connections: 嘗試連線總數 (含失敗)。暴增提示連線洩漏或攻擊。
  • Uptime: 服務器運行秒數。配合其他計數器換算 QPS/TPS。
  • Slow_queries: 慢查詢次數。配合 `long_query_time` 閾值,驅動慢查詢日誌分析。

五、 實戰分析範例

-- 獲取全域狀態
SHOW GLOBAL STATUS LIKE 'Com_%';
SHOW GLOBAL STATUS LIKE 'Innodb_rows_%';
SHOW GLOBAL STATUS LIKE 'Connections';
SHOW GLOBAL STATUS LIKE 'Uptime';
SHOW GLOBAL STATUS LIKE 'Slow_queries';

-- 粗略 QPS 估算
SELECT VARIABLE_VALUE INTO @uptime FROM performance_schema.global_status WHERE VARIABLE_NAME='Uptime';
SELECT (VARIABLE_VALUE/@uptime) AS QPS FROM performance_schema.global_status WHERE VARIABLE_NAME='Com_select';

六、 總結

定期採集 `GLOBAL STATUS` 快照、建立基線、設定告警閾值 (如 `Slow_queries` 突增、 `Com_rollback` 異常高、 `Connections` 飛升),是資料庫運行維護的基本功。結合 `performance_schema`、 `sys schema`、慢查詢日誌、 `pt-query-digest` 形成完整觀測體系。

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