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,否则则报告错误。(即对性能要求比较严苛)
相关推荐
2301_822382764 分钟前
使用Python进行网络设备自动配置
jvm·数据库·python
1104.北光c°6 分钟前
【黑马点评项目笔记 | 优惠券秒杀篇】构建高并发秒杀系统
java·开发语言·数据库·redis·笔记·spring·nosql
梦梦代码精6 分钟前
Gitee 年度人工智能竞赛开源项目评选揭晓!!!
开发语言·数据库·人工智能·架构·gitee·前端框架·开源
l1t9 分钟前
DeepSeek总结的postgresql扩展方案文章
数据库·postgresql
crossaspeed14 分钟前
MySQL-锁
数据库·mysql
ActionTech20 分钟前
不再隐藏变更:MySQL 9.6 如何变革外键管理
数据库·mysql
TDengine (老段)24 分钟前
TDengine TSDB 产品常见问题解决指南
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
Dxy123931021628 分钟前
MySQL如何排序后取最后10条数据——性能优化全解析
数据库·mysql·性能优化
Aloudata32 分钟前
高并发指标中台选型:Aloudata CAN 横向扩展与架构稳定性深度评估
数据库·架构·数据分析·etl·指标平台
Mr_star_galaxy32 分钟前
【MySQL】数据库基础
数据库·mysql