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,否则则报告错误。(即对性能要求比较严苛)
相关推荐
weelinking8 小时前
【产品】00_产品经理用Claude实现产品系列介绍
数据库·人工智能·sql·数据挖掘·github·产品经理
2301_803934619 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
秋910 小时前
windows中安装redis
数据库·redis·缓存
Cosolar10 小时前
万字详解:RAG 向量索引算法与向量数据库架构及实战
数据库·人工智能·算法·数据库架构·milvus
想唱rap10 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
小江的记录本10 小时前
【Java基础】泛型:泛型擦除、通配符、上下界限定(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·mysql·spring·面试·职场和发展
SeaTunnel10 小时前
AI 让 SeaTunnel 读源码和调试过时了吗?
大数据·数据库·人工智能·apache·seatunnel·数据同步
凯瑟琳.奥古斯特11 小时前
数据冗余与规范化的本质[数据库原理]
开发语言·数据库·职场和发展
_ku_ku_11 小时前
数据库系统原理 · SQL 数据定义、更新及数据库编程 · 自学总结
数据库·oracle
Mortalbreeze11 小时前
深度理解文件系统 ---- 从磁盘存储到内核存储
大数据·linux·数据库