一、TPCC 介绍

    • TPC:
      全称Transaction Processing Performance Council (事务处理性能委员会),是一家非盈利性组织,该组织制定各种商业应用的基准测试规范,任意厂商和个人,都可以按照其规范来开发自己的应用程序。
    • TPC-C:
      是由 TPC 推出的一套基准测试程序,主要用于联机事务类应用的测试,最后的字母 C 是序号,因为在他之前有 TPC-A 和 TPC-B。使用的比较多的是 TPC-C,因为 TPCC 是套基准。
      TPC-C 是专门针对联机交易处理系统(OLTP 系统)的规范,一般情况下我们也把这类系统称为业务处理系统
      TPC-C 使用三种性能和价格度量,其中性能由 tpmC(transactions per minute,tpm)衡量,Cpm)衡量,C 指 TPC 中的 C 基准程序。它的定义是每分钟内系统处理的新订单个数。TPC-C 还经常以系统性能价格比的方式体现,单位是$/tpmC,即以系统的总价格(单位是美元)/tpmC 数值得出

    • TPCC-MYSQL:
      由 Percona 基于 TPCC 规范开发的一套 mysql 基准测试程序。

    • 测试指标:
      TPC-C 测试的结果主要有两个指标,即流量指标(Throughput,简称 tpmC)。
      流量指标(Throughput,简称 tpmC):按照 TPC 组织的定义,流量指标描述了系统在执行支付操作、订单状态查询、发货和库存状态查询这 4 种交易的同时,每分钟可以处理多少个新订单交易。所有交易的响应时间必须满足 TPC-C 测试规范的要求,且各种交易数量所占的比例也应该满足 TPC-C 测试规范的要求。在这种情况下,流量指标值越大说明系统的联机事务处理能力越高。

二、tpcc-mysql 安装

1.安装 bzr

  1. # yum install bzr -y

2.下载 tpcc-mysql

  1. # cd ~
  2. # bzr branch lp:~percona-dev/perconatools/tpcc-mysql

下载完成后,当前目录下会有 tpcc-mysql 目录

3.编译安装 tpcc-mysql

  1. # cd ~/tpcc-mysql/src/
  2. # make

如果没有报错,tpcc-mysql 就安装完成了。
安装完成后会生成两个可执行文件:
tpcc_load:用于初始化数据。
tpcc_start:用于执行基准测试。

三、tpcc-mysql 使用

一般分为下面 4 个步骤:
创建数据和表结构
加载数据
执行测试
测试结果解读分析

1.创建表和索引

创建库:

  1. # mysql -uroot -p123123 -h127.0.0.1 -e "create database tpcc;"

创建表结构:

  1. # mysql -uroot -p123123 -h127.0.0.1 tpcc < ~/tpcc-mysql/create_table.sql

创建索引:

  1. # mysql -uroot -p123123 -h127.0.0.1 tpcc < ~/tpcc-mysql/add_fkey_idx.sql

表的介绍:

  1. # mysql -uroot -p123123 -h127.0.0.1 -e "show tables from tpcc;"
  2. +----------------+
  3. | Tables_in_tpcc |
  4. +----------------+
  5. | customer | #用户表
  6. | district | #分布表
  7. | history | #历史记录表
  8. | item | #订单详情表
  9. | new_orders | #新订单表
  10. | order_line |
  11. | orders | #商品表
  12. | stock |
  13. | warehouse | #仓库相关表
  14. +----------------+

2.初始化数据

先看看 tpcc_load 的用法吧

  1. # ./tpcc_load -h
  2. *************************************
  3. *** ###easy### TPC-C Data Loader ***
  4. *************************************
  5. usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
  6. OR
  7. tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
  8. * [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS

参数含义:
server:数据库 IP
DB:数据库名称
user:用户名
pass:密码
warehouse:仓库数量
执行下面的命令开始初始化数据:(仓库数我选择了 10 个)

  1. # ./tpcc_load 127.0.0.1 tpcc root 123123 10

初始化成功最后会输出:

  1. ...DATA LOADING COMPLETED SUCCESSFULLY.

3.开始测试:

  1. # ./tpcc_start --help
  2. ***************************************
  3. *** ###easy### TPC-C Load Generator ***
  4. ***************************************
  5. ./tpcc_start: invalid option -- '-'
  6. 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 warehouses :仓库数量
-c connections:并发线程数
-r warmup_time:指定预热时间,以秒为单位,默认是 10 秒,主要目的是为了将数据加载到内存。
-l running_time:指定测试执行的时间,以秒为单位,默认是 20 秒。
-i report_interval:指定生成报告的间隔时间。
-f report_file:将测试中各项操作的记录输出到指定文件内保存。
-t trx_file:输出更详细的操作信息到指定文件内保存。

执行下面的命令:

真实测试场景中,建议预热时间不小于 5 分钟,持续压测时长不小于 30 分钟,否则测试数据可能不具参考意义。

  1. # ~/tpcc-mysql/tpcc_start -h 127.0.0.1 -d tpcc -u root -p 123123 -w 10 -c 10 -r 120 -l 300 -f /tmp/tpcc_mysql.log -t /tmp/tpcc_mysql.rtx

输出结果如下:

  1. ***************************************
  2. *** ###easy### TPC-C Load Generator ***
  3. ***************************************
  4. option h with value '127.0.0.1'
  5. option d with value 'tpcc'
  6. option u with value 'root'
  7. option p with value '123123'
  8. option w with value '10'
  9. option c with value '10'
  10. option r with value '120'
  11. option l with value '300'
  12. option f with value '/tmp/tpcc_mysql.log'
  13. option t with value '/tmp/tpcc_mysql.rtx'
  14. <Parameters>
  15. [server]: 127.0.0.1
  16. [port]: 3306
  17. [DBname]: tpcc
  18. [user]: root
  19. [pass]: 123123
  20. [warehouse]: 10
  21. [connection]: 10
  22. [rampup]: 120 (sec.)
  23. [measure]: 300 (sec.)
  24.  
  25. RAMP-UP TIME.(120 sec.) # 预热结束
  26.  
  27. MEASURING START. #开始压测
  28.  
  29. 10, 918(0):0.846|1.053, 917(0):0.179|0.314, 92(0):0.089|0.119, 91(0):0.989|1.
  30. 134, 92(0):2.696|2.913
  31. 20, 929(0):0.805|0.863, 927(0):0.167|0.177, 93(0):0.076|0.079, 93(0):0.909|0.
  32. 913, 92(0):2.578|2.580
  33. 30, 911(0):0.811|0.863, 917(0):0.165|0.202, 91(0):0.083|0.084, 91(0):0.934|0.
  34. 942, 92(0):2.548|2.597
  35. 40, 911(0):0.928|1.189, 907(0):0.200|0.249, 92(0):0.090|0.110, 91(0):1.037|1.
  36. 277, 90(0):3.027|3.103
  37. 50, 871(0):0.881|0.994, 875(0):0.184|0.208, 87(0):0.091|0.099, 87(0):0.996|0.
  38. 997, 88(0):2.762|2.802
  39. 60, 886(0):0.863|1.008, 883(0):0.184|0.208, 88(0):0.084|0.091, 89(0):0.958|0.
  40. 990, 89(0):2.656|2.667
  41. 70, 900(0):0.835|0.891, 900(0):0.177|0.188, 90(0):0.087|0.087, 90(0):0.997|1.
  42. 007, 90(0):2.679|2.720
  43. 80, 868(0):0.841|0.915, 866(0):0.168|0.192, 87(0):0.087|0.094, 87(0):0.950|0.
  44. 953, 88(0):2.517|2.611
  45. 90, 914(0):0.825|0.914, 916(0):0.168|0.244, 91(0):0.083|0.086, 90(0):0.928|0.
  46. 935, 90(0):2.532|2.590
  47. 100, 860(0):0.811|0.846, 861(0):0.171|0.205, 86(0):0.086|0.107, 86(0):0.954|0.
  48. 956, 87(0):2.540|2.622
  49. 110, 881(0):0.837|0.904, 875(0):0.175|0.192, 88(0):0.081|0.082, 89(0):0.941|0.
  50. 949, 87(0):2.594|2.625
  51. 120, 881(0):0.840|1.029, 882(0):0.176|0.196, 89(0):0.085|0.114, 88(0):0.962|0.
  52. 969, 87(0):2.620|2.705
  53. 130, 831(0):0.860|0.910, 835(0):0.182|0.328, 83(0):0.085|0.095, 83(0):0.994|1.
  54. 008, 84(0):2.733|2.747
  55. 140, 861(0):0.860|0.926, 855(0):0.184|0.231, 85(0):0.091|0.097, 86(0):0.983|0.
  56. 985, 87(0):2.844|2.880
  57. 150, 850(0):0.849|0.908, 852(0):0.183|0.198, 85(0):0.091|0.105, 85(0):0.996|1.
  58. 012, 84(0):2.835|2.858
  59. 160, 863(0):0.865|0.922, 867(0):0.179|0.242, 87(0):0.130|0.167, 87(0):1.038|1.
  60. 067, 86(0):2.771|4.078
  61. 170, 849(0):0.851|0.891, 850(0):0.178|0.259, 85(0):0.081|0.094, 84(0):0.976|0.
  62. 978, 85(0):2.741|2.760
  63. 180, 850(0):0.814|0.865, 850(0):0.170|0.181, 85(0):0.081|0.085, 86(0):0.928|0.
  64. 935, 86(0):2.496|2.721
  65. 190, 857(0):0.845|0.904, 855(0):0.174|0.190, 86(0):0.086|0.098, 86(0):0.973|1.
  66. 006, 86(0):2.611|2.685
  67. 200, 864(0):0.828|0.877, 866(0):0.173|0.250, 86(0):0.084|0.086, 86(0):0.949|0.
  68. 954, 85(0):2.536|2.547
  69. 210, 847(0):0.843|0.952, 847(0):0.177|0.201, 85(0):0.084|0.085, 85(0):0.960|0.
  70. 994, 86(0):2.594|2.617
  71. 220, 869(0):0.869|0.909, 869(0):0.180|0.219, 87(0):0.087|0.088, 87(0):1.004|1.
  72. 014, 87(0):2.586|2.652
  73. 230, 836(0):1.031|1.059, 834(0):0.207|0.225, 83(0):0.095|0.097, 83(0):1.164|1.
  74. 220, 83(0):3.049|3.051
  75. 240, 849(0):0.817|0.841, 848(0):0.172|0.234, 85(0):0.078|0.079, 85(0):0.922|0.
  76. 929, 85(0):2.548|2.551
  77. 250, 833(0):0.836|0.894, 838(0):0.173|0.230, 84(0):0.079|0.081, 83(0):0.952|0.
  78. 981, 83(0):2.569|2.598
  79. 260, 853(0):0.855|0.946, 849(0):0.177|0.224, 84(0):0.090|0.164, 86(0):1.029|1.
  80. 036, 85(0):2.749|2.877
  81. 270, 839(0):0.860|0.936, 840(0):0.194|0.221, 85(0):0.082|0.086, 83(0):0.970|0.
  82. 980, 85(0):2.724|2.755
  83. 280, 856(0):0.829|0.879, 854(0):0.175|0.221, 86(0):0.081|0.087, 86(0):0.944|0.
  84. 945, 84(0):2.592|2.733
  85. 290, 836(0):0.836|0.945, 838(0):0.176|0.238, 83(0):0.081|0.085, 84(0):0.951|0.
  86. 958, 85(0):2.609|2.618
  87. 300, 855(0):0.838|0.938, 853(0):0.172|0.200, 85(0):0.084|0.086, 85(0):0.940|0.
  88. 964, 86(0):2.523|2.556
  89.  
  90. STOPPING THREADS.......... # 压测结束
  91.  
  92. <Raw Results>
  93. [0] sc:26028 lt:0 rt:0 fl:0
  94. [1] sc:26026 lt:0 rt:0 fl:0
  95. [2] sc:2603 lt:0 rt:0 fl:0
  96. [3] sc:2602 lt:0 rt:0 fl:0
  97. [4] sc:2604 lt:0 rt:0 fl:0
  98. in 300 sec.
  99.  
  100. <Raw Results2(sum ver.)>
  101. [0] sc:26028 lt:0 rt:0 fl:0
  102. [1] sc:26026 lt:0 rt:0 fl:0
  103. [2] sc:2603 lt:0 rt:0 fl:0
  104. [3] sc:2602 lt:0 rt:0 fl:0
  105. [4] sc:2604 lt:0 rt:0 fl:0
  106.  
  107. <Constraint Check> (all must be [OK])
  108. [transaction percentage]
  109. Payment: 43.48% (>=43.0%) [OK]
  110. Order-Status: 4.35% (>= 4.0%) [OK]
  111. Delivery: 4.35% (>= 4.0%) [OK]
  112. Stock-Level: 4.35% (>= 4.0%) [OK]
  113. [response time (at least 90% passed)] #都ok,hh
  114. New-Order: 100.00% [OK]
  115. Payment: 100.00% [OK]
  116. Order-Status: 100.00% [OK]
  117. Delivery: 100.00% [OK]
  118. Stock-Level: 100.00% [OK]
  119.  
  120. <TpmC>
  121. 5205.600 TpmC

Output

4.测试结果解读:

第一部分:

  1. 10, 918(0):0.846|1.053, 917(0):0.179|0.314, 92(0):0.089|0.119, 91(0):0.989|1.134, 92(0):2.696|2.913
  2. 20, 929(0):0.805|0.863, 927(0):0.167|0.177, 93(0):0.076|0.079, 93(0):0.909|0.913, 92(0):2.578|2.580
  3. 30, 911(0):0.811|0.863, 917(0):0.165|0.202, 91(0):0.083|0.084, 91(0):0.934|0.942, 92(0):2.548|2.597
  4. ......
  5. 290, 836(0):0.836|0.945, 838(0):0.176|0.238, 83(0):0.081|0.085, 84(0):0.951|0.958, 85(0):2.609|2.618
  6. 300, 855(0):0.838|0.938, 853(0):0.172|0.200, 85(0):0.084|0.086, 85(0):0.940|0.964, 86(0):2.523|2.556

这类信息,每 10 秒产生一条输出,返回结果以逗号分隔后,共可以分为 6 列,
第一项:每 10 秒为一个区间进行输出。后面 5 项分属不同的业务操作,输出信息格式都一样。每一项都有 4 个属性值,即该时间区间内成功执行的事务、出现延迟的事务、90%事务的响应时间、事务的最大响应时间。
例如第一条的解释:

在第一个 10 秒区间内:
创建订单:共操作 918 次,失败 0 次,90%的事务平均操作时间 0.846 秒,最大操作时间是 1.053 秒。
订单支付:同上
查询订单:同上
发货:同上
查询库存:同上

第二部分:

  1. <Raw Results>
  2. [0] sc:26028 lt:0 rt:0 fl:0 -- New-Order,新订单业务成功(success,简写 sc)数量,操作出现延迟(late,简写 lt)数量,操作重试(retry,简写 rt)数量,失败(failure,简写 fl)数量
  3. [1] sc:26026 lt:0 rt:0 fl:0 -- Payment,支付业务统计,其他同上
  4. [2] sc:2603 lt:0 rt:0 fl:0 -- Order-Status,订单状态业务统计,其他同上
  5. [3] sc:2602 lt:0 rt:0 fl:0 -- Order-Status,订单状态业务统计,其他同上
  6. [4] sc:2604 lt:0 rt:0 fl:0 -- Stock-Level,库存业务统计,其他同上
  7. in 300 sec.

第三部分:
TPCC 测试要求下面状态必须为 OK

  1. <Constraint Check> (all must be [OK])
  2. [transaction percentage]
  3. Payment: 43.48% (>=43.0%) [OK] # 要求支付业务占比
  4. Order-Status: 4.35% (>= 4.0%) [OK] # 要求支付业务占比
  5. Delivery: 4.35% (>= 4.0%) [OK] # 物流相关业务占比
  6. Stock-Level: 4.35% (>= 4.0%) [OK] # 库存相关业务占比
  7. [response time (at least 90% passed)] #都ok,hh
  8. New-Order: 100.00% [OK]
  9. Payment: 100.00% [OK]
  10. Order-Status: 100.00% [OK]
  11. Delivery: 100.00% [OK]
  12. Stock-Level: 100.00% [OK]

第四部分:

  1. <TpmC>
  2. 5205.600 TpmC

Tpm 是 Transactions per minute的缩写,C 指的是执行 TPC-C 基准测试。
TpmC 这项指标为整体性能指标,表示每分钟事务数,代表了本系统每分钟能够处理的订单数量。
该值是第一次统计结果中的新订单事务数除以总耗时分钟数,例如本例中是 26028/5 = 5205.6

(图形展示,尝试了好久失败了,果然烂尾)

参考链接:http://www.unixfbi.com/380.html#3

tpcc-mysql 实践的更多相关文章

  1. Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...

  2. [MySQL实践] 实践记录

    [MySQL实践] 实践记录 版权2019.5.17更新 MySQL MySQL各版本区别 一.选择的版本 1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持 ...

  3. SQL Server链接MySQL实践

    最近在访问多数据库的时候进行了SQLServer链接MySQL数据的实践,现总结如下: 一.  安装mysql-connector-odbc驱动: 1. 在SQL Server服务器的机器上安装mys ...

  4. linux使用yum的方式安装mysql实践

    1.先检测是否已安装mysql ps -ef|grep mysql root : pts/ :: /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mys ...

  5. 挤点时间写博客-php&MySQL实践

    hi 晚上要吃火锅的嘛,挤点时间写点东西吧,别被老板发现哦 1.PHP与MySQL 五.文章发布系统之后台 5.2 创建配置文件和初始化文件 为了统一配置以及管理方便,还有就是减少代码的冗余. 分别为 ...

  6. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  7. (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...

  8. mysql实践总结

    首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集,闲暇时我也会多看几次 ...

  9. 使用Prometheus+Grafana监控MySQL实践

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...

  10. MySQL 实践

    一.下载MySQL 1.mysql-noinstall-5.1.73-win32.zip 2.mysql-connector-net-6.8.3.msi 二.安装MySQL 三.连接MySQL 1.A ...

随机推荐

  1. MS SQL的CASE...WHEN...THEN...END语法

    根据多个可能的答案检查一个值或变量. 举例说明: SELECT [type],CASE [type] WHEN 'TT' THEN 'TYPE_TABLE' WHEN 'FN' THEN 'SQL_S ...

  2. unite2017相关

    日程 http://unite2017.csdn.net/ http://www.sohu.com/a/137202360_280780 http://www.gameres.com/750046.h ...

  3. uoj#38. 【清华集训2014】奇数国(线段树+数论)

    传送门 不难看出就是要先求区间积,再求这个区间积的\(\varphi\) 因为\(\varphi(x)=x\times\frac{p_1-1}{p_1}\times\frac{p_2-1}{p_2}\ ...

  4. Eclipse集成Git的实践

    最近一直在研究爬虫的相关技术,网上关于爬虫的教程实在是太少了,只能靠一些零零散散的博客资料做一个浅度的学习,我们已经学习了webcollector,htmlparser,Jsoup这些爬虫技术,并也成 ...

  5. 基于Vue的省市区三级联动插件

    官网地址:https://distpicker.uine.org/ 安装: npm install v-distpicker --save 局部注册: import VDistpicker from ...

  6. Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. ASP.NET Core性能测试

    ASP.NET Core性能测试 应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关 ...

  8. 软件模拟I2C时输入与输出切换

    一 为达到类似C51的操作需要添加以下位带操作:#include "stm32f10x_gpio.h"#include "stm32f10x_conf.h" / ...

  9. MS SqlServer之Exec和EXEC SP_EXECUTESQL

    exec执行sql时字符串时,不能给变量赋值,如果要在sql里给变量赋值,请用EXEC SP_EXECUTESQL 示例: 通过 SP_EXECUTESQL 的第2个参数来定义有哪些参数 输出的加OU ...

  10. plsql过期注册

    Product Code:4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number:601769password:xs374ca 打开plsql工具 点击注册即可