• ADADADADAD

    MySQL 基准测试工具tpcc-mysql使用手册及报告分析[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:13:43

    作者:文/会员上传

    简介:

    〇 下载安装

    git clone https://github.com/Percona-Lab/tpcc-mysql.git
    cd tpcc-mysql/src && make
    make如果成功后,会在tpcc-mysql目录下生成tpcc_load与tpcc_start

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。




    〇 下载安装

      git clone https://github.com/Percona-Lab/tpcc-mysql.git
      cd tpcc-mysql/src && make

    make如果成功后,会在tpcc-mysql目录下生成tpcc_load与tpcc_start两个工具。

    make如果报错,一般原因是缺少mysql_config环境,报错形如:

      /bin/sh: mysql_config: command not found
      load.c:19:19: error: mysql.h: No such file or directory
      ………………
      ‘MYSQL_TYPE_LONG’ undeclared
      ‘MYSQL_TYPE_STRING’ undeclared
      ………………
      并还有一些ERROR

      原因是环境变量设置有误,或缺少mysql_config环境。
      比如此处,设置一下环境变量:
      export PATH=$PATH:/data/mysql57/bin/

    〇 使用

    ① 在待测试的实例中创建一个db,名为tpcc:CREATE DATABASE tpcc;

    ② 导入一个tpcc-mysql目录下的表结构:mysql -u$user -p$password -h$host < ./tpcc-mysql/create_table.sql

    ③ load数据:
    ./tpcc-mysql/tpcc_load -h$host -d tpcc -u$user -p$password -w 1000 > tpcc.load &
    当然这样load很慢,工具配套有一个简单的并行load数据的脚本,load.sh:
    使用起来也是十分简单的:

    脚本并不是很完善,需要自行修改脚本:
    将HOST变量为mysql server的host,
    将四个-p后加入密码。
    使用如下:

      bash load.sh $dbname $warehouse_count
    第一个为schema的名字,此处为tpcc,
    第二个为warehouse的数量,此处为1000。

    并行导入是基于四个部分进行的,分别为:
    [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
    通过./tpcc_load --help,结合load.sh就可以理解。

    ④ 导入数据结束后,最后加一个index和fk:mysql -u -p < ./tpcc-mysql/add_fkey_idx.sql

    ⑤ 测试
    ./tpcc_start -h$host -u$user -p$password -d tpcc -w 1000 -c32 -r300 -l7200 > /data/tpcc.report 2>&1 &

    详细用法:
    Usage: tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file -t trx_file

    -w 仓库数量
    -c 并发连接数
    -r 开始测试前进行warm up的时间,进行预热后,测试效果更好,老叶建议300秒以上
    -l 测试时间
    -i 生成报告间隔时长

    一般-f和-t无需指定,一般直接重定向拿到报告结果就足够

    〇 报告分析

    [server]: …………
    [port]: 3306
    [DBname]: tpcc
    [user]: root
    [pass]: *******
    [warehouse]: 1000
    [connection]: 32
    [rampup]: 300 (sec.)
    [measure]: 7200 (sec.)

    RAMP-UP TIME.(300 sec.)

    MEASURING START.

    10, trx: 1670, 95%: 120.954, 99%: 143.328, max_rt: 291.917, 1675|207.554, 168|164.157, 167|745.408, 168|875.570
    20, trx: 1656, 95%: 128.301, 99%: 150.585, max_rt: 229.172, 1650|102.471, 165|121.764, 165|569.108, 163|737.483
    30, trx: 1679, 95%: 129.072, 99%: 151.535, max_rt: 197.850, 1682|103.436, 168|80.130, 168|658.822, 170|686.441
    40, trx: 1662, 95%: 126.926, 99%: 147.551, max_rt: 182.245, 1656|122.172, 167|97.329, 167|567.806, 164|717.234
    50, trx: 1650, 95%: 130.041, 99%: 151.807, max_rt: 201.568, 1657|124.149, 164|145.663, 164|660.545, 167|683.961
    60, trx: 1659, 95%: 127.841, 99%: 148.926, max_rt: 189.087, 1653|107.867, 166|90.284, 165|535.922, 168|690.396
    ……………………………………………………………………………………………………

    STOPPING THREADS................................

    每隔10秒打印一次报告。
    trx:1670:在给定间隔时间内(此处为10秒,下同)新产生的交易订单,越高越好。
    95%: 120.954:在给定间隔时间内,95%以上笔订单,新产生的响应时间,越低越好。
    99%: 143.328:在给定间隔时间内,99%以上笔订单,新产生的响应时间,越低越好。
    max_rt: 291.917:在给定间隔时间内,产生订单最长的响应时间
    1675|207.554, 168|164.157, 167|745.408, 168|875.570:其他类型的事务吞吐量和最大响应时间。


    [0] sc:5 lt:1169114 rt:0 fl:0 avg_rt: 88.2 (5)
    [1] sc:15 lt:1168760 rt:0 fl:0 avg_rt: 35.1 (5)
    [2] sc:1597 lt:115317 rt:0 fl:0 avg_rt: 24.3 (5)
    [3] sc:0 lt:116913 rt:0 fl:0 avg_rt: 318.2 (80)
    [4] sc:0 lt:116914 rt:0 fl:0 avg_rt: 477.7 (20)
    in 7200 sec.

    -- 0代表新订单,1代表支付订单,2代表订单状态业务,3代表发货,4代表库存
    -- sc:success成功,lt:late延迟,rt:retry重试,fl:failure失败,avg_rt:平均响应时间
    -- 可以看出此次测试的mysql server几乎完全无法满足虚拟的tpcc业务。

    -- 第二次统计结果
    [0] sc:5 lt:1169123 rt:0 fl:0
    [1] sc:15 lt:1169116 rt:0 fl:0
    [2] sc:1597 lt:115317 rt:0 fl:0
    [3] sc:0 lt:116913 rt:0 fl:0
    [4] sc:0 lt:116914 rt:0 fl:0

    (all must be [OK])-- 以下逻辑均需要ok才可通过
    [transaction percentage]
    Payment: 43.47% (>=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)]-- 响应耗时,需要90%+订单通过指标,才会成为OK
    New-Order: 0.00% [NG] *
    Payment: 0.00% [NG] *
    Order-Status: 1.37% [NG] *
    Delivery: 0.00% [NG] *
    Stock-Level: 0.00% [NG] *
    -- 这里再一次显示我测试的mysql server是“不通过”的。


    9742.658 TpmC-- 该值为每分钟交易transaction数,为第一次产生的结果数/执行分钟=1169114/120



    〇 参考文档
    https://github.com/Percona-Lab/tpcc-mysql


    作者微信公众号(持续更新)


    MySQL 基准测试工具tpcc-mysql使用手册及报告分析.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载