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,否则则报告错误。(即对性能要求比较严苛)
相关推荐
松涛和鸣40 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·3 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德3 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql