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,否则则报告错误。(即对性能要求比较严苛)
相关推荐
Decay__23 分钟前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
小徐不徐说5 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁7 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk8 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW9 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB9 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_9 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室10 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库