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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值