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

MySQL 效能測試實戰:TPC-C 基準測試完整流程與結果解讀

     編輯:MySQL 綜合教學

MySQL 效能測試實戰:TPC-C 基準測試完整流程與結果解讀

TPC-C 是模擬線上交易處理 (OLTP) 的國際標準基準,Percona 實作的 tpcc-mysql 能更真實反映生產負載。本文記錄從編譯、建表、載入、壓測到結果分析的完整過程。

工具特性對比

工具特點適用場景
sysbench輕量、OLTP 簡化、CPU/IO/記憶體綜合測試快速基線、參數調優對比、CI/CD 整合
tpcc-mysql完整 TPC-C 規範、複雜業務邏輯、多表關聯生產負載模擬、架構驗證、容量規劃
mysqlslapMySQL 內建、單表並發簡單並發壓測

環境準備


# 依賴
sudo apt-get install bzr build-essential libmysqlclient-dev
# 或 CentOS
yum install bzr gcc mysql-devel

# 下載源碼
bzr branch lp:~percona-dev/perconatools/tpcc-mysql
cd tpcc-mysql/src
make
# 生成 tpcc_load、tpcc_start 兩個執行檔

環境變數配置(關鍵)


export MYSQL_HOME=/usr/local/mysql
export LD_LIBRARY_PATH=$MYSQL_HOME/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$MYSQL_HOME/include:$C_INCLUDE_PATH
export PATH=$MYSQL_HOME/bin:$PATH

步驟 1:建立資料庫與表結構


mysql -u root -p -e "CREATE DATABASE tpcc;"
mysql -u root -p tpcc < create_table.sql
mysql -u root -p tpcc < add_fkey_idx.sql

9 張核心表:warehouse、district、customer、history、new_orders、orders、order_line、item、stock。

步驟 2:載入測試資料


./tpcc_load 127.0.0.1 tpcc root password 1
# 參數:host db user pass warehouse_count
# 1 warehouse ≈ 100MB 資料,建議 ≥ CPU 核心數

步驟 3:執行壓測


./tpcc_start \
  -h 127.0.0.1 -P 3306 \
  -d tpcc -u root -p password \
  -w 4 -c 32 \
  -r 30 -l 300 \
  -i 10 -f result.log \
  -t truncate.log > console.log
參數含義建議
-wWarehouse 數量≥ CPU 核心數,避免熱點
-c並發連線數2-4× CPU 核心
-r預熱時間(秒)30-60s,填充 Buffer Pool
-l測試持續時間(秒)≥ 300s,穩態觀測
-i報告間隔(秒)10-30s

步驟 4:結果解讀

即時輸出分析


MEASURING START.
1, 42(0):4.115|4.310, 40(0):0.968|0.992, 4(0):0.326|0.332, 3(0):3.784|5.406, 3(0):10.934|10.943

格式:秒數, 成功(超時):P90延遲|最大延遲

  • 42(0):4.115|4.310 → New-Order:42 成功、0 超時、P90 4.1ms、最大 4.3ms
  • 5 類交易:New-Order、Payment、Order-Status、Delivery、Stock-Level

最終匯總指標



[0] sc:378 lt:0 rt:0 fl:0   -- New-Order
[1] sc:374 lt:0 rt:0 fl:0   -- Payment
[2] sc:37  lt:0 rt:0 fl:0   -- Order-Status
[3] sc:36  lt:0 rt:0 fl:0   -- Delivery
[4] sc:38  lt:0 rt:0 fl:0   -- Stock-Level
in 10 sec.

 (all must be [OK])
Payment: 43.34% (>=43.0%) [OK]
Order-Status: 4.29% (>=4.0%) [OK]
Delivery: 4.17% (>=4.0%) [OK]
Stock-Level: 4.40% (>=4.0%) [OK]

Response Time (90% passed): All [OK]

 2268.000 TpmC

關鍵指標解讀

指標含義健康標準
TpmC每分鐘交易數 (Transactions per minute-C)越高越好,核心吞吐指標
sc (success)成功交易數佔比符合 TPC-C 規範分佈
lt (timeout)超時交易數應為 0 或極低
P90 延遲90% 交易完成時間< 10ms (OLTP 典型)
Constraint Check交易混合比例、響應時間合規性全 [OK] 才算有效測試

常見問題與調優方向

  • TpmC 低:檢查 innodb_buffer_pool_size、innodb_io_capacity、innodb_log_file_size、CPU 綁核
  • Payment 佔比低:檢查索引、鎖競爭、innodb_thread_concurrency
  • 大量 Timeout:innodb_lock_wait_timeout、死鎖頻率、長事務
  • P90 延遲高:慢查詢分析、IO 瓶頸、sync_binlog 影響

監控配套(必做)

壓測同步收集:


# 系統層
iostat -x 1, vmstat 1, mpstat -P ALL 1, sar -n DEV 1
# MySQL 層
mysqladmin -i 1 ext | grep -E 'Innodb_|Qcache_|Threads_|Handler_'
# 或使用 Prometheus + Grafana + mysqld_exporter

TPC-C 測試能暴露 sysbench 無法發現的鎖競爭、死鎖、長事務、複雜 JOIN 效能等真實生產問題,是上線前必做的驗證環節。

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