tpcc mysql 基準測試

使用tpcc mysql進行基準測試

獲取並編譯tpcc mysql

獲取tpcc mysql 源碼

sudo apt-get install bzr
bzr branch lp:~percona-dev/perconatools/tpcc-mysql

編譯tpcc mysql

  • 在編譯之前,你應該確認mysql_config在你的PATH變量中。
    cd src
    make
    

    編譯完成後,會在上一層目錄看到兩個可執行文件tpcc_load和tpcc_start。

導入測試數據

  1. 新建數據庫
    mysqladmin -uroot -p*** create scutech-tpcc
    
  2. 新建表
    mysql -uroot -p*** scutech-tpcc < create_table.sql
    
  3. 新建索引和FK
    mysql -uroot -p*** scutech-tpcc < add_fkey_idx.sql
    
  4. 導入數據
    ./tpcc_load 127.0.0.1:3306 scutech-tpcc root password 10
    
    • 127.0.0.1:3306 : 指定mysql的IP和端口號
    • scutech-tpcc : 指定數據庫的名字
    • root : 用戶名
    • password : 密碼
    • 10 : 倉庫數(可根據需要來設置倉庫數的大小,總結網上資料所說,設置40-100個是對CPU的測試,400-1000個是對IO的測試)
    • 導入的時間可能會比較長,10個倉庫剛導入進去的大小約爲1G,所以應該根據實際情況來設置倉庫的大小。

開始測試

執行下面的命令,就會開始測試,並把結果打印到屏幕上。如果需要分析結果,應該把輸出結果重定向到一個文件中。

./tpcc_start -h127.0.0.1 -P3306 -dscutech-tpcc -uroot -ppassword -w10 -c2 -r120 -l600

  • -h:指定mysql的IP
  • -P:指定mysql的端口號
  • -d:指定數據庫的名字,應該和上面創建的保持一致
  • -u:mysql用戶名
  • -p:mysql 用戶的密碼
  • -w:指定倉庫數
  • -c:指定併發連接數。
  • -r:指定預熱的時間,目的是把數據緩存到內存中
  • -l:指的測試時間,以10秒爲間隔輸出事務的吞吐量

結果分析

輸出的結果如下:

***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '127.0.0.1'
option P with value '3306'
option d with value 'tpcc_scutech'
option u with value 'root'
option p with value 'dingjia'
option w with value '10'
option c with value '2'
option r with value '120'
option l with value '600'
<Parameters>
     [server]: 127.0.0.1
     [port]: 3306
     [DBname]: tpcc_scutech
       [user]: root
       [pass]: dingjia
  [warehouse]: 10
 [connection]: 2
     [rampup]: 120 (sec.)
    [measure]: 600 (sec.)

RAMP-UP TIME.(120 sec.)

MEASURING START.

  10, 2286(0):1.373|1.590, 2283(0):0.279|0.398, 228(0):0.148|0.208, 229(0):1.604|1.863, 228(0):4.438|4.993
  20, 2315(0):1.351|1.469, 2314(0):0.273|0.317, 231(0):0.145|0.152, 231(0):1.507|1.537, 233(0):4.351|4.362
  ……
  ……
  580, 1102(0):1.373|1.498, 1100(0):0.300|0.371, 110(0):0.155|0.169, 109(0):1.602|1.837, 110(0):4.356|4.592  
  590, 1654(0):1.355|1.460, 1656(0):0.294|0.388, 165(0):0.181|0.184, 166(0):1.660|1.723, 165(0):4.354|4.433
  600, 1862(0):1.345|1.555, 1859(0):0.289|0.410, 187(0):0.138|0.166, 186(0):1.528|1.755, 186(0):4.365|4.608

STOPPING THREADS..

<Raw Results>
  [0] sc:131981  lt:0  rt:0  fl:0
  [1] sc:131977  lt:0  rt:0  fl:0
  [2] sc:13198  lt:0  rt:0  fl:0
  [3] sc:13198  lt:0  rt:0  fl:0
  [4] sc:13198  lt:0  rt:0  fl:0
 in 600 sec.

<Raw Results2(sum ver.)>
  [0] sc:131981  lt:0  rt:0  fl:0
  [1] sc:131977  lt:0  rt:0  fl:0
  [2] sc:13198  lt:0  rt:0  fl:0
  [3] sc:13198  lt:0  rt:0  fl:0
  [4] sc:13198  lt:0  rt:0  fl:0

<Constraint Check> (all must be [OK])
 [transaction percentage]
        Payment: 43.48% (>=43.0%) [OK]
   Order-Status: 4.35% (>= 4.0%) [OK]
       Delivery: 4.35% (>= 4.0%) [OK]
    Stock-Level: 4.35% (>= 4.0%) [OK]
 [response time (at least 90% passed)]
      New-Order: 100.00%  [OK]
        Payment: 100.00%  [OK]
   Order-Status: 100.00%  [OK]
       Delivery: 100.00%  [OK]
    Stock-Level: 100.00%  [OK]

<TpmC>
                 13198.100 TpmC

  1. 業務邏輯
    tpcc包括了4個業務邏輯:
    1. New-Order:新訂單
    2. Order-Status:支付
    3. Delivery:發貨
    4. Stock-Level:庫存
  2. late的定義
    根據不同的業務,late的定義也不同,4種業務邏輯分別對操作延遲定義的界限值如下所示:
    1. Payment 5ms
    2. Order-Status 5ms
    3. Delivery 80ms
    4. Stock-Level 20ms
  3. 數據意義
    10, 2286(0):1.373|1.590, 2283(0):0.279|0.398, 228(0):0.148|0.208, 229(0):1.604|1.863, 228(0):4.438|4.993
    

    二到六列數值組成格式是: 成功執行的次數(推遲執行的次數):90%事務的相應時間|最大相應時間
    這一行有6列數據,意思分別是
    • 第一列:因爲是10秒輸出一句,所以這裏代表的數據是0-10秒之間的結果。
    • 第二列:這一列是總的結果
    • 第三列:新訂單業務的結果
    • 第四列:支付業務的結果
    • 第五列:發貨業務的結果
    • 第六列:庫存業務的結果
      這裏我們主要關注總的結果就行了。
  4. TmpC的意義
    tpmC是代表每分鐘事務處理的數量。

提取結果文件中的數據

  1. 如果在執行測試的時候,把輸出的數據重定向到一個文件當中,則可以利用下面的腳本去把時間和總的事務數提取出來。
    #!/bin/bash
    #filename tpcc-output-analyze.sh
    
    TIMESLOT=1
    if [ -n "$2" ];then
            TIMESLOT=$2
            echo “Defined $2″
    fi
    cat $1 | grep -v HY000 | grep -v payment | grep -v neword | awk -v timeslot=$TIMESLOT ' BEGIN { FS="[,():]"; s=0; cntr=0; aggr=0 } /MEASURING START/ { s=1} /STOPPING THREADS/ {s=0} /0/ { if (s==1) { cntr++; aggr+=$2; } if ( cntr==timeslot ) { printf ("%d %3d\n",$1,(aggr/'$TIMESLOT')) ; cntr=0; aggr=0 } } '
    
  2. 用法也很簡單:
    ./tpcc-output-analyze.sh Log_file_name
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章