MySQL 壓測工具 tpcc-mysql 安裝及使用


TPC-C是專門針對聯機交易處理系統(OLTP系統)的規範,通常狀況下咱們也把這類系統稱爲業務處理系統。tpcc-mysql是percona基於TPC-C(下面簡寫成TPCC)衍生出來的產品,專用於MySQL基準測試。mysql

安裝
經過下載源碼編譯安裝(推薦)
MySQL中文網便捷下載地址:
http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
[root@server01 pkg]# gunzip tpcc-mysql-src.tgz
[root@server01 pkg]# tar -xf tpcc-mysql-src.tar
[root@server01 pkg]# cd tpcc-mysql
[root@server01 tpcc-mysql]# ls
add_fkey_idx.sql  count.sql  create_table.sql  drop_cons.sql  load.sh  README  schema2  scripts  src
[root@server01 tpcc-mysql]# cd src/
[root@server01 src]# ls
delivery.c  load.c  Makefile  ordstat.c     payment.c  rthist.h    sequence.h  spt_proc.c  support.c  trans_if.h
driver.c    main.c  neword.c  parse_port.h  rthist.c   sequence.c  slev.c      spt_proc.h  tpc.h
[root@server01 src]# make
cc -w -O2 -g -I. `mysql_config --include`  -c load.c
cc -w -O2 -g -I. `mysql_config --include`  -c support.c
cc load.o support.o `mysql_config --libs_r` -lrt -o ../tpcc_load
cc -w -O2 -g -I. `mysql_config --include`  -c main.c
cc -w -O2 -g -I. `mysql_config --include`  -c spt_proc.c
cc -w -O2 -g -I. `mysql_config --include`  -c driver.c
cc -w -O2 -g -I. `mysql_config --include`  -c sequence.c
cc -w -O2 -g -I. `mysql_config --include`  -c rthist.c
cc -w -O2 -g -I. `mysql_config --include`  -c neword.c
cc -w -O2 -g -I. `mysql_config --include`  -c payment.c
cc -w -O2 -g -I. `mysql_config --include`  -c ordstat.c
cc -w -O2 -g -I. `mysql_config --include`  -c delivery.c
cc -w -O2 -g -I. `mysql_config --include`  -c slev.c
cc main.o spt_proc.o driver.o support.o sequence.o rthist.o neword.o payment.o ordstat.o delivery.o slev.o `mysql_config --libs_r` -lrt -o ../tpcc_start
若是 make 沒有報錯,就會在 ../tpcc-mysql 下生成 tpcc 二進制命令行工具 tpcc_load 、 tpcc_start
[root@server01 src]# cd ..
[root@server01 tpcc-mysql]# ls
add_fkey_idx.sql  count.sql  create_table.sql  drop_cons.sql  load.sh  README  schema2  scripts  src  tpcc_load  tpcc_start
tpcc_load  提供初始化數據的功能
tpcc_start 進行壓力測試sql

tpcc-mysql的業務邏輯及其相關的幾個表做用以下:
New-Order:新訂單,一次完整的訂單事務,幾乎涉及到所有表  
Payment:支付,主要對應 orders、history 表  
Order-Status:訂單狀態,主要對應 orders、order_line 表  
Delivery:發貨,主要對應 order_line 表  
Stock-Level:庫存,主要對應 stock 表  
其餘相關表:  
客戶:主要對應 customer 表  
地區:主要對應 district 表  
商品:主要對應 item 表  
倉庫:主要對應 warehouse 表  數據庫

TPCC測試前準備
#建立測試數據庫
[root@server01 tpcc-mysql]# mysqladmin  -uroot create tpcc1000
#建立測試數據表
[root@server01 tpcc-mysql]# mysql -uroot -f tpcc1000 < create_table.sql
#建立外鍵和索引
[root@server01 tpcc-mysql]# mysql -uroot -f tpcc1000 < add_fkey_idx.sql
初始化完畢後,就能夠開始加載測試數據了socket

開始測試
[root@server01 tpcc-mysql]# ./tpcc_load  localhost tpcc1000 root "Aa123456789" 15
*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: root
       [pass]: Aa123456789
  [warehouse]: 15工具

2002, HY000, Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
該錯誤是由於默認找的mysql.sock文件路徑不一樣,能夠建立一個軟鏈接
[root@server01 tpcc-mysql]# ln -s /data/mysqldata3306/sock/mysql.sock /var/lib/mysql/mysql.sock
加載過程比較緩慢,須要耐心等待
[root@server01 tpcc-mysql]# ./tpcc_load  localhost tpcc1000 root "Aa123456789" 15
*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: root
       [pass]: Aa123456789
  [warehouse]: 15
TPCC Data Load Started...
Loading Item
.................................................. 5000
......
.......... 3000
Orders Done.測試

...DATA LOADING COMPLETED SUCCESSFULLY.
加載完成後可進行測試
[root@server01 tpcc-mysql]# ./tpcc_start -hlocalhost -P3306 -d tpcc1000 -u root -p"Aa123456789" -w 15 -c 10 -r 120 -l 120
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value 'localhost'
option P with value '3306'
option d with value 'tpcc1000'
option u with value 'root'
option p with value 'Aa123456789'
option w with value '15'
option c with value '10'
option r with value '120'
option l with value '120'
<Parameters>
     [server]: localhost
     [port]: 3306
     [DBname]: tpcc1000
       [user]: root
       [pass]: Aa123456789
  [warehouse]: 15
 [connection]: 10
     [rampup]: 120 (sec.)
    [measure]: 120 (sec.)this

RAMP-UP TIME.(120 sec.)命令行

MEASURING START.server

  10, 15(10):13.769|15.806, 19(0):2.986|5.338, 1(0):1.646|1.951, 1(0):13.931|18.609, 0(0):19.999|45.221
  20, 12(10):10.660|10.737, 11(0):2.842|2.873, 2(0):0.577|1.896, 2(0):10.088|12.811, 2(2):19.999|40.274
  30, 18(12):10.888|13.278, 16(0):1.416|2.252, 1(0):0.000|0.999, 1(0):0.000|8.792, 1(1):0.000|37.348
  40, 13(6):8.680|13.399, 12(0):2.362|4.198, 1(0):0.000|0.593, 1(0):0.000|14.000, 2(2):19.999|45.828
  50, 19(11):10.943|11.400, 16(0):2.667|3.177, 3(0):0.488|0.790, 2(0):10.548|11.274, 0(0):0.000|0.000
  60, 11(7):8.947|11.514, 15(0):2.810|3.232, 1(0):0.000|0.569, 2(0):11.321|11.724, 3(3):19.999|40.327
  70, 16(13):10.152|11.452, 15(0):2.586|2.738, 2(0):0.489|0.746, 1(0):0.000|10.245, 1(1):0.000|40.009
  80, 14(9):10.407|11.322, 15(0):2.127|2.458, 1(0):0.000|0.479, 2(0):9.574|11.261, 2(2):19.999|41.798
  90, 19(12):9.147|9.379, 21(0):3.113|4.260, 1(0):0.000|0.826, 1(0):0.000|13.315, 2(2):19.999|38.874
 100, 13(13):11.407|17.713, 13(0):1.502|1.815, 1(0):0.000|1.018, 2(0):13.091|13.434, 0(0):0.000|0.000
 110, 15(12):9.611|11.027, 15(0):2.136|2.491, 2(0):0.311|0.660, 2(0):12.476|12.597, 2(2):19.999|43.571
 120, 13(12):9.200|13.701, 14(0):2.347|2.436, 2(0):0.431|0.854, 1(0):0.000|9.053, 2(2):19.999|37.823
-- 以逗號分隔,共6列
-- 第一列,第N次10秒
-- 第二列,新訂單成功執行壓測的次數(推遲執行壓測的次數):90%事務的響應時間|本輪測試最大響應時間,新訂單事務數也被認爲是總有效事務數的指標
-- 第三列,支付業務成功執行次數(推遲執行次數):90%事務的響應時間|本輪測試最大響應時間
-- 第四列,訂單狀態業務的結果,後面幾個的意義同上
-- 第五列,物流發貨業務的結果,後面幾個的意義同上
-- 第六列,庫存倉儲業務的結果,後面幾個的意義同上
STOPPING THREADS..........索引

<Raw Results>                    -- 第一次統計結果
  [0] sc:51  lt:127  rt:0  fl:0  -- New-Order,新訂單業務成功(success,簡寫sc)次數,延遲(late,簡寫lt)次數,重試(retry,簡寫rt)次數,失敗(failure,簡寫fl)次數
  [1] sc:182  lt:0  rt:0  fl:0   -- Payment,支付業務統計,其餘同上
  [2] sc:18  lt:0  rt:0  fl:0    -- Order-Status,訂單狀態業務統計,其餘同上
  [3] sc:18  lt:0  rt:0  fl:0    -- Delivery,發貨業務統計,其餘同上
  [4] sc:0  lt:17  rt:0  fl:0    -- Stock-Level,庫存業務統計,其餘同上
 in 120 sec.

<Raw Results2(sum ver.)>         -- 第二次統計結果
  [0] sc:51  lt:127  rt:0  fl:0
  [1] sc:182  lt:0  rt:0  fl:0
  [2] sc:18  lt:0  rt:0  fl:0
  [3] sc:18  lt:0  rt:0  fl:0
  [4] sc:0  lt:17  rt:0  fl:0

<Constraint Check> (all must be [OK])
 [transaction percentage]
        Payment: 44.07% (>=43.0%) [OK]   -- 支付成功次數(上述統計結果中 sc + lt)必須大於43.0%,不然結果爲NG,而不是OK
   Order-Status: 4.36% (>= 4.0%) [OK]    -- 訂單狀態,其餘同上
       Delivery: 4.36% (>= 4.0%) [OK]    -- 發貨,其餘同上
    Stock-Level: 4.12% (>= 4.0%) [OK]    -- 庫存,其餘同上
 [response time (at least 90% passed)]   -- 響應耗時指標必須超過90%經過才行
      New-Order: 28.65%  [NG] *          -- 下面幾個響應耗時指標所有 100% 經過
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 0.00%  [NG] *

<TpmC>                  89.000 TpmC            -- TpmC結果值(每分鐘事務數,該值是第一次統計結果中的新訂單事務數除以總耗時分鐘數)

相關文章
相關標籤/搜索