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

MySQL 關鍵效能指標 QPS/TPS 計算與監控實戰

     編輯:MySQL 綜合教學

MySQL 關鍵效能指標 QPS/TPS 計算與監控實戰

QPS (Query Per Second) 與 TPS (Transaction Per Second) 是衡量資料庫處理能力的核心指標。本文詳細說明手動計算方法、狀態變數含義,並提供自動化監控腳本思路。

一、指標定義

指標全稱含義核心狀態變數
QPSQueries Per Second每秒執行的查詢總數 (含 SELECT/INSERT/UPDATE/DELETE 等)Questions 或 Queries
TPSTransactions Per Second每秒提交的事務數 (含提交 + 回滾)Com_commit + Com_rollback

二、手動計算步驟

1. 獲取基線值

mysql> SHOW GLOBAL STATUS LIKE 'Questions';
mysql> SHOW GLOBAL STATUS LIKE 'Com_commit';
mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback';

2. 間隔 N 秒後再次獲取

# 例如間隔 10 秒
sleep 10
mysql> SHOW GLOBAL STATUS LIKE 'Questions';  -- 記錄 Q2
mysql> SHOW GLOBAL STATUS LIKE 'Com_commit';  -- 記錄 C2
mysql> SHOW GLOBAL STATUS LIKE 'Com_rollback'; -- 記錄 R2

3. 計算

QPS = (Q2 - Q1) / 10
TPS = (C2 - C1 + R2 - R1) / 10

三、狀態變數詳解

  • Questions:客戶端發送的語句數 (不含預處理內部命令)
  • Queries:Server 執行的語句數 (含存儲過程內部調用),通常 ≥ Questions
  • Com_commit:顯式 COMMIT 次數
  • Com_rollback:顯式 ROLLBACK 次數
  • Com_select、Com_insert、Com_update、Com_delete:各類 DML 計數

四、自動化監控腳本 (Bash 範例)

#!/bin/bash
# monitor_qps_tps.sh
HOST=127.0.0.1
USER=monitor
PASS=monitor_pass
INTERVAL=10

get_status() {
    mysql -h$HOST -u$USER -p$PASS -sN -e "SHOW GLOBAL STATUS LIKE '$1';" | awk '{print $2}'
}

while true; do
    Q1=$(get_status Questions)
    C1=$(get_status Com_commit)
    R1=$(get_status Com_rollback)
    sleep $INTERVAL
    Q2=$(get_status Questions)
    C2=$(get_status Com_commit)
    R2=$(get_status Com_rollback)

    QPS=$(( (Q2 - Q1) / INTERVAL ))
    TPS=$(( (C2 - C1 + R2 - R1) / INTERVAL ))

    echo "$(date '+%F %T') QPS=$QPS TPS=$TPS" >> /var/log/mysql_qps_tps.log
done

五、進階監控建議

  1. 多維度指標:結合 Threads_running、Innodb_row_lock_waits、Slow_queries、Select_scan (全表掃描)
  2. 時序資料庫:推送至 Prometheus + Grafana,構建儀表板與告警
  3. 分時段基線:業務高峰/低谷期基線不同,告警閾值需動態調整
  4. 關聯業務指標:QPS/TPS 波動需對應業務流量 (如大促、定時任務) 分析

六、常見誤區

  • 混淆 Questions 與 Queries:監控系統請明確選擇其一並保持一致
  • 忽略 Com_rollback:高回滾率可能暗示應用邏輯缺陷或死鎖頻發
  • 單點采樣:需持續采樣並計算移動平均,平滑抖動

QPS/TPS 是資料庫健康度的「心率與血壓」。建立自動化采集、基線建模與多維告警,才能在故障發生前發現異常,從容應對流量洪峰。

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