前言
本文為《如何了解 SQL 的執行頻率》姊妹篇,聚焦 `SHOW [SESSION|GLOBAL] STATUS` 核心變數解讀,提供相同技術內容的結構化重述,強化指標分類與運維應用場景。
一、 會話 vs 全域視角
- `SESSION` (預設):當前連線統計,適合即時除錯。
- `GLOBAL`:實例啟動累計,適合趨勢分析、基線建立、告警閾值設定。
- 命令列:`mysqladmin extended-status` 獲取完結構化輸出。
二、 SQL 語句類型計數器 (Com_*)
| 變數 | 業務含義 | 計數邏輯 |
| Com_select | 查詢次數 | 每 SELECT +1 |
| Com_insert | 插入次數 | 批次 INSERT 僅 +1 |
| Com_update | 更新次數 | 每 UPDATE +1 |
| Com_delete | 刪除次數 | 每 DELETE +1 |
引擎選型依據: `Com_update` 佔比高 → 讀寫混合/寫入密集 → **InnoDB** (行鎖、MVCC、崩潰安全) 優於 MyISAM (表鎖、無事務)。
三、 InnoDB 行級精確計數器
| 變數 | 含義 |
| Innodb_rows_read | SELECT 掃描/返回總行數 |
| Innodb_rows_inserted | INSERT 寫入總行數 |
| Innodb_rows_updated | UPDATE 修改總行數 |
| Innodb_rows_deleted | DELETE 刪除總行數 |
結合 `Com_*` 可算出「平均每語句影響行數」,識別大批次操作特徵。
四、 事務健康度指標
- `Com_commit` / `Com_rollback`:提交 vs 回滾比。回滾頻繁 → 應用邏輯缺陷、死鎖多、長事務未提交。
五、 基礎服務器指標
- `Connections`:嘗試連線總數 (含失敗)。突增 → 連線洩漏/爆破攻擊。
- `Uptime`:運行秒數。配合計數器換算 QPS/TPS。
- `Slow_queries`:慢查詢次數。驅動慢查詢日誌分析、索引優化。
六、 運維應用建議
- 建立 `GLOBAL STATUS` 定時採集任務 (每 1-5 分鐘),寫入時序資料庫 (Prometheus/InfluxDB)。
- 設定關鍵指標基線與動態閾值告警 (如 `Slow_queries` 環比增長 > 50%)。
- 結合 `performance_schema.events_statements_summary_by_digest` 定位高頻/高耗時 SQL。
- 定期 `pt-query-digest` 分析慢查詢日誌,產出優化報告。