TPCC-MySQL快速上手

TPCC介绍

TPCC是一种基于OLTP的性能测试标准,其主要目的是测试数据库在高并发条件下的事务处理能力。该测试需要在规定时间内完成一定数量的事务,并计算出每分钟处理事务数作为衡量数据库性能的标准。

TPCC模拟了批发供应商的业务场景,涉及多个事务类型,并实现了对多用户并发访问的支持。

安装TPCC

克隆代码库

bash 复制代码
git clone https://github.com/Percona-Lab/tpcc-mysql.git

cd tpcc-mysql/src

修改Makefile

javascript 复制代码
#
# "make all" to build necessary executables.
#


# 添加-pthread和-lm
LIBS=           `mysql_config --libs_r` -pthread -lrt -lm

INC=            -I. `mysql_config --include`

#DEFS=          -DDEBUG

CFLAGS=         -w -O3 -g

TRANSACTIONS=   neword.o payment.o ordstat.o delivery.o slev.o
OBJS=           main.o spt_proc.o driver.o support.o sequence.o rthist.o sb_percentile.o $(TRANSACTIONS)

.SUFFIXES:
.SUFFIXES: .o .c

.c.o:
        $(CC) $(CFLAGS) $(INC) $(DEFS) -c $*.c

all: ../tpcc_load ../tpcc_start

../tpcc_load : load.o support.o
        $(CC) load.o support.o $(LIBS) -o ../tpcc_load

../tpcc_start : $(OBJS)
        $(CC) $(OBJS) $(LIBS) -o ../tpcc_start

clean :
        rm -f *.o

编译

bash 复制代码
cd tpcc-mysql/src
make

编译成功:

编译成功后,在tpcc-mysql目录下会生成两个可执行文件:tpcc_load 、tpcc_start(用于灌数据和测试)

TPCC使用

建库建表

sql 复制代码
# 建库(tpcc10)
mysql -h127.0.0.1 -uroot -pkingsoft. -P6033 -e "create database tpcc10;"
                    
# 建表
mysql -h127.0.0.1 -uroot -pkingsoft. -P6033 -f tpcc10 < ./tpcc-mysql/create_table.sql

灌数据

bash 复制代码
# -w指定仓库数
./tpcc_load -h127.0.0.1 -dtpcc10 -uroot -p"123456" -w10 -P6033

注:灌数据时仓库越多,测试数据越大,整个过程越慢,可根据需求自行调整。

灌数据结果:

开始测试

bash 复制代码
# -w 100(仓库数)、-c 128(线程数)、-r 300(预热10s)、-l 3600(持续压测30s)
# 预热和执行时间过短时,直接结果可能有问题
./tpcc_start -h127.0.0.1 -uroot -pkingsoft. -P6033 -dtpcc10 -w10 -c128 -r300 -l600

测试结果

TPCC结果解读

<Raw Results>

bash 复制代码
<Raw Results>
  [0] sc:1 lt:286606  rt:0  fl:0 avg_rt: 46.4 (5)
  [1] sc:0 lt:286528  rt:0  fl:0 avg_rt: 313.7 (5)
  [2] sc:0 lt:28661  rt:0  fl:0 avg_rt: 87.5 (5)
  [3] sc:0 lt:28658  rt:0  fl:0 avg_rt: 250.0 (80)
  [4] sc:38 lt:28622  rt:0  fl:0 avg_rt: 79.6 (20)
 in 600 sec.

<Raw Results2(sum ver.)>
  [0] sc:1  lt:286606  rt:0  fl:0
  [1] sc:0  lt:286605  rt:0  fl:0
  [2] sc:0  lt:28661  rt:0  fl:0
  [3] sc:0  lt:28660  rt:0  fl:0
  [4] sc:38  lt:28622  rt:0  fl:0

表示测试期间,5种事务执行情况:

  • sc:表示执行成功且请求延时在最大阀值之内的事务数
  • lt:表示执行成功,但请求延时在最大阀值之外的事务数
  • rt:表示通过重试后执行成功的事务数
  • fl:表示执行失败的事务数
  • avg_rt:表示事务的平均处理延迟

注:上述(5)、(5)、(5)、(80)、(20)分别表示其请求延迟的最大阈值。

<Constraint Check>

bash 复制代码
<Constraint Check> (all must be [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)]
      New-Order: 0.00%  [NG] *
        Payment: 0.00%  [NG] *
   Order-Status: 0.00%  [NG] *
       Delivery: 0.00%  [NG] *
    Stock-Level: 0.13%  [NG] *

<TpmC>
                 28660.699 TpmC
  • **[transaction percentage]含义:**TPCC对每一种事务的比例有要求,因此 transaction percentage 这个检查项,是用来检查tpcc测试结束后,每一种事务所在的比例是否合乎要求。
  • [response time (at least 90% passed)]含义: TPCC规定了每一种事务的最大请求延迟。在 Raw Results 最后的括号中,为5、5、5、80、20。TPCC要求,每一种事务必须有90%的事务的请求延迟,在这个规定范围内。如果达到要求这报告ok,否则则报告错误。(即对性能要求比较严苛)
相关推荐
roman_日积跬步-终至千里30 分钟前
【模式识别与机器学习(18)】关联规则深入浅出教程
数据库·机器学习·oracle
杨DaB32 分钟前
【MySQL】06 视图 view
数据库·mysql
spencer_tseng35 分钟前
MySQL my.cnf
mysql
星空露珠40 分钟前
lua获取随机颜色rgb转换hex
数据结构·数据库·算法·游戏·lua
专注VB编程开发20年42 分钟前
VB.NET多线程处理每个Web请求,ThreadPool.QueueUserWorkItem要求是object
数据库·vb.net·webserver
TracyCoder12342 分钟前
Redis与MySQL数据不一致:核心场景与解决方案
数据库·redis·mysql
南棱笑笑生44 分钟前
20251202给荣品RD-RK3588-MID开发板的Android13启用黑夜模式
数据库
2501_939909051 小时前
MySQL 数据库管理
数据库·mysql
山水无间道1 小时前
redis的rdb文件迁移
数据库·redis·缓存