zoukankan      html  css  js  c++  java
  • mysql性能测试-tpcc

    Tpcc-mysql


    • TPC-C是专门针对联机交易处理系统(OLTP系统)的规范
    • Tpcc-mysql由percona根据规范实现
    TPCC流程  更能模拟线上业务
     
     
    tpcc模拟业务场景

     
    1.下载tpcc-mysql
    aiapple@ubuntu:~$ bzr branch lp:-percona-dev/perconatools/tpcc-mysql
     
    tpcc-mysql目录结构
    root@itcast01:/tmp/tpcc-mysql# ls
    add_fkey_idx.sql  create_table.sql  load.sh  schema2  src
    count.sql         drop_cons.sql     README   scripts
    2.编译安装
    进入src目录编译
    root@itcast01:/tmp/tpcc-mysql# cd src/
    root@itcast01:/tmp/tpcc-mysql/src# ls
    delivery.c  main.c    ordstat.c     rthist.c    sequence.h  spt_proc.h  trans_if.h
    driver.c    Makefile  parse_port.h  rthist.h    slev.c      support.c
    load.c      neword.c  payment.c     sequence.c  spt_proc.c  tpc.h
    root@itcast01:/tmp/tpcc-mysql/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
     
     
    root@itcast01:/tmp/tpcc-mysql# ls
    add_fkey_idx.sql  create_table.sql  load.sh  schema2  src        tpcc_start
    count.sql         drop_cons.sql     README   scripts  tpcc_load

    可以看出编译之后出现了tpcc_start,tpcc_load两个脚本;

     
    添加环境变量
     
    export LD_LIBRARY_PATH=$MYSQL_HOME/lib
    export C_INCLUDE_PATH=$MYSQL_HOME/include
    export PATH=$MYSQL_HOME/bin:$PATH
     
    查看环境当中$MYSQL_HOME:
    mysql> SHOW VARIABLES LIKE '%di%';
    +-----------------------------------------+----------------------------+
    | Variable_name                           | Value                      |
    +-----------------------------------------+----------------------------+
    | basedir                                 | /usr                       |
    | binlog_direct_non_transactional_updates | OFF                        |
    | character_sets_dir                      | /usr/share/mysql/charsets/ |
    | datadir                                 | /var/lib/mysql/            |
    | div_precision_increment                 | 4                          |
    | engine_condition_pushdown               | ON                         |
    | have_dynamic_loading                    | YES                        |
     
    所以此环境中 $MYSQL_HOM为/usr;
     
    3.使用tpcc-mysql的步骤
    • 需要创建数据和表结构
    • 加载数据
    • 执行测试 
    • 结果解读
     
    3.1 创建表结构和索引
     
    #创建库
    mysql> create database tpcc;
    Query OK, 1 row affected (0.00 sec)
     
    #创建表结构
    mysql> source /tmp/tpcc-mysql/create_table.sql
    Query OK, 0 rows affected (0.00 sec)
     
    Query OK, 0 rows affected (0.00 sec)
     
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
     
    #创建索引
    mysql> source /tmp/tpcc-mysql/add_fkey_idx.sql
    Query OK, 0 rows affected (0.00 sec)
     
    Query OK, 0 rows affected (0.00 sec)
    表的种类
    mysql> show tables;
    +--------------+
    | Tables_in_t1 |
    +--------------+
    | customer     |               #用户表
    | district     |               #分布表
    | history      |               #历史记录表
    | item         |               #订单详情表
    | new_orders   |               #新订单表
    | order_line   |               
    | orders       |               #商品表
    | stock        |               
    | warehouse    |               #仓库相关表
    +--------------+
    9 rows in set (0.00 sec)
    3.2 加载数据
     
    导数据
    ./tpcc_load [server] [DB] [user] [pass] [warehouse_num]
    aiapple@ubuntu:~/tpcc-mysql$./tpcc_load 127.0.0.1 tpcc root 000000 1
    函数 含义
    server 数据库IP
    DB DB名称
    user 用户名
    pass 密码
    warehouse 仓库数量
     
     
     
     
     
     
     
     
    3.3 开始测试
     
    ./tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouse -c connections -r warmup_time -I running_time -i report-interval -f report-file
     
    aiapple@ubuntu:~/tpcc-mysql$ ./tpcc_start -h 127.0.0.1 -P 3306 -d tpcc -u root -p 000000 -w 1 -c 5 -r 1 -l 10 -i 1 -f test.t -t t_file > tt.t
     
    将屏幕输出重定向到文件,有利于分析测试结果;并保留本次测试信息;
     
    脚本参数 参数 含义
    -w warehouses 仓库数量
    -c connections 并发线程数
    -r warmup_time 预热时间
    -I running_time 运行时间
    -i report_interval 输出时间间隔
    -f report_file 输出文件
     
    3.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
       2,32(0):3.662|3.741, 31(0):1.082|1.087, 4(0):0.230|0.241, 3(0):3.168|3.199, 5(0):7.928|8.092
     
         2       :运行时间点,第二秒时;
    32(0):3.662|3.741:新订单执行成功次数(超时次数):90%的响应时间|最大响应时间,
     
    31(0):1.082|1.087:支付业务执行成功次数(超时次数):90%的响应时间|最大响应时间,
     
    4(0):0.230|0.241: 订单状态查询的成功次数(超时次数):90%的响应时间|最大响应时间
     
    3(0):3.168|3.199: 物流相关业务请求成功次数(超时次数):90%的响应时间|最大响应时间
     
    5(0):7.928|8.092: 仓储相关业务请求成功次数(超时次数):90%的响应时间|最大响应时间,
    运行结果的输出:
     
    汇总:
    <Raw Results>
      [0] sc:378  lt:0  rt:0  fl:0
      [1] sc:374  lt:0  rt:0  fl:0
      [2] sc:37  lt:0  rt:0  fl:0
      [3] sc:36  lt:0  rt:0  fl:0
      [4] sc:38  lt:0  rt:0  fl:0
     in 10 sec.
     
    [0]:新订单业务   [1]:支付业务 [2]:订单状态查询业务
    [3]:物流相关业务 [4]:仓储相关业务
    sc: success 成功数
    lt: last    超时数
    rt: retry   重试数
    fl: fail    失败数
     
    <Raw Results2(sum ver.)>
      [0] sc:378  lt:0  rt:0  fl:0
      [1] sc:374  lt:0  rt:0  fl:0
      [2] sc:37  lt:0  rt:0  fl:0
      [3] sc:36  lt:0  rt:0  fl:0
      [4] sc:38  lt:0  rt:0  fl:0
     
    TPCC测试要求:
    <Constraint Check> (all must be [OK])
     [transaction percentage]
            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 (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>           #每分钟事务数
                     2268.000 TpmC
     
     
     
     
     
  • 相关阅读:
    根据屏幕宽度适应屏幕样式
    设计模式之命令模式
    动态代理的使用以及其实现机制
    PLSQL链接不上oracle
    struts2自定义结果类型demo
    Tomcat虚拟路径
    SEQUENCE序列
    mysql导出数据库中建表语句和数据
    Tomcat6 启动时 Cannot assign requested address: JVM_Bind
    sql常用命令
  • 原文地址:https://www.cnblogs.com/Aiapple/p/5705146.html
Copyright © 2011-2022 走看看