一、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
# yum install bzr -y
2.下载 tpcc-mysql
# cd /usr/local/
# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
下载完成后,当前目录下会有 tpcc-mysql 目录
3.编译安装 tpcc-mysql
# cd /usr/local/tpcc-mysql/src/
# make
如果没有报错,tpcc-mysql 就安装完成了。
安装完成后会生成两个可执行文件:tpcc_load
:用于初始化数据。tpcc_start
:用于执行基准测试。
三、tpcc-mysql 使用
一般分为下面 4 个步骤:
创建数据和表结构
加载数据
执行测试
测试结果解读分析
1.创建表和索引
创建库:
# mysql -uroot -punixfbi -h192.168.199.134 -e "create database tpcc;"
创建表结构:
# mysql -uroot -punixfbi -h192.168.199.134 tpcc < /usr/local/tpcc-mysql/create_table.sql
创建索引:
# mysql -uroot -punixfbi -h192.168.199.134 tpcc < /usr/local/tpcc-mysql/add_fkey_idx.sql
表的介绍:
# mysql -uroot -punixfbi -h192.168.199.134 -e "show tables from tpcc;"
+----------------+
| Tables_in_tpcc |
+----------------+
| customer | #用户表
| district | #分布表
| history | #历史记录表
| item | #订单详情表
| new_orders | #新订单表
| order_line |
| orders | #商品表
| stock |
| warehouse | #仓库相关表
+----------------+
2.初始化数据
先看看 tpcc_load 的用法吧
# ./tpcc_load -h
*************************************
*** ###easy### TPC-C Data Loader ***
*************************************
usage: tpcc_load [server] [DB] [user] [pass] [warehouse]
OR
tpcc_load [server] [DB] [user] [pass] [warehouse] [part] [min_wh] [max_wh]
* [part]: 1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS
参数含义:
server:数据库 IP
DB:数据库名称
user:用户名
pass:密码
warehouse:仓库数量
执行下面的命令开始初始化数据:(仓库数我选择了 10 个)
# ./tpcc_load 192.168.199.134 tpcc root unixfbi 10
初始化成功最后会输出:
...DATA LOADING COMPLETED SUCCESSFULLY.
3.开始测试:
# ./tpcc_start --help
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
./tpcc_start: invalid option -- '-'
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:输出更详细的操作信息到指定文件内保存。
执行下面的命令: