TPCC性能测试

0. 参考

TPC-C 基准测试程序在 OLTP 系统中的应用与实现
percona tpcc

1. 概要

TPC(事务处理性能委员会:Transaction Processing Performance Council),是由数 10 家会员公司创建的非盈利组织,总部设在美国。TPC 的主要成员是计算机软硬件厂家,其主要成员包括 IBM,HP,Oracle,Microsoft 等。TPC 的功能是制定商务应用标准程序(Benchmark)的标准规范,性能和价格度量,并管理测试结果的发布。TPC 不给出基准测试程序的代码,而只给出基准程序的标准规范。任何厂家或其它测试者都可以根据规范,最优的构造自己的系统。TPC 已经推出的基准程序包括:TPC-A,TPC-B,TPC-C,TPC-D,TPC-E,TPC-W。其中

TPC-C 是在线事务处理(OLTP)的基准程序。

TPC-D 是决策支持的基准程序。

TPC-E 是大型企业的信息服务的基准程序。

本文主要向读者介绍 TPC-C 标准的设计模型,实现及其应用。本文中要测试的 OLTP 系统是 MySQL。

2. TPC-C 介绍

TPC-C 是一种衡量 OLTP 系统性能和可伸缩性的基准测试项目。它由一系列的 OLTP 工作流组成,包括查询,更新及队列式小批量事务在内的广泛数据库功能。它模拟了一个典型的 OLTP 应用环境中的活动,这些活动由一系列复杂的事务组成。TPC-C 工作流应该具备以下特性:

  • 适当复杂的 OLTP 事务
  • 在线和延迟事务执行模型
  • 多用户
  • 适当的系统和应用执行时间
  • 大量的磁盘输入和输出
  • 事务完整性(ACID)
  • 随机的数据访问
  • 数据库由各种大小,属性和关系的表组成。

2.1. TPC-C 商业模型(E-R 模型)

TPC-C 模拟了一个比较有代表意义的 OLTP 应用环境:在线订单处理系统。假设有一个大型商品批发商,拥有 N 个位于不同区域的仓库,每个仓库负责为 10 个销售点供货,每个销售点有 3000 个客户,每个客户平均一个订单有 10 项产品。由于一个仓库中不可能 存储公司所有的货物,有一些请求必须发往其它仓库,因此,数据库在逻辑上是 分布的。N 是一个可变参数,测试者可以随意改变 N,以获得最佳测试效果。

图 1.TPC-C E-R 模型

2.2. TPC-C 输入数据流

TPC-C 系统需要处理的交易有以下五种:

  1. New-Order: 客户输入一笔新的订货交易
  2. Payment:更新客户账户余额以反应其支付状况
  3. Delivery:发货(批处理交易)
  4. Order-Status:查询客户最近交易的状态
  5. Stock-Level:查询仓库库存状况,以便能够及时补货。

各个类型的交易在系统中所占的比例:

  1. New-Order: 45%
  2. Payment:43%
  3. Delivery:4%
  4. Order-Status:4%
  5. Stock-Level:4%

对于前四种类型的交易,要求响应时间在 5 秒以内;对于库存状况的查询交易,要求响应时间在 20 秒以内。

这五种交易作用在图 1 所示的九张表上,事务操作类型包括更新,插入,删除和取消操作。

2.2 TPC-C 输出指标

TPC-C 的测试结果主要有两个指标:

流量指标(tpmC):描述了系统在执行 Payment,Order-Status,Delivery,Stock-level 这四种交易的同时,每分钟可以处理的 New-Order 交易的数量。流量指标值越大越好。

tpm 是 transactions per minute 的简称;C 指 TPC 中的 C 基准程序。它的定义是每分钟内系统处理的新订单个数。要注意的是,在处理新订单的同时,系统还要按图 1 的要求处理其 它 4 类事务 请求。从图 1 可以看出,新订单请求不可能超出全部事务请求的 45%,因此,当一个 系统的性能为 1000tpmC 时,它每分钟实际处理的请求数是 2000 多个。

性价比(Price/tpmC):测试系统价格与流量指标的比值。性价比越小越好。

2.3. TPC-C 实现

TPC-C 作为 OLTP 系统的测试标准程序,有很多商用的或者免费的软件都实现了这个标准。下面我们介绍几种比较有名的实现软件。

HammerOra:一款负载测试工具,目前支持 Oracle,MySQL 和 Web 应用。基于 Tcl 语言,内嵌了 TPC-C 和 TPC-H 两套标准测试脚本。Hammerora 的设计原理(以 Oracle 为例)是解析 Oracle 的 Trace 文件,并把它们转化为 Oratcl 程序, 然后在 Oracle 数据库中用多个用户并发的对用户 的事务进行“回放”。我们知道,Oracle 的 Trace 文件能够翔实的记录用户对数据库的操作。这样 Hammerora 能够保证对用户环境的真实模拟。

Orabm:Oracle 服务器的 CPU 和内存性能测试工具。是 Geoff Ingram 构建的一个程序包,包含了一套 SQL 脚本和几个命令行程序。Orabm 装载程序(Orabmload)构建了一组遵从 TPC-C 标准的数据用以测试。Orabm 事务以 TPC-C 中的 Stock-Level 和 Order-Status 事务为基础。它的运行机制简单描述如下,Orabm 通过在每个用户指定的并发数据库会话 (session) 中运行用户执行数量的数据库事务来进行工作。事务通过 ORABM 模式下的 ORABM_SERVERSIDE_STRESS 存储过程运行。对每个并发会话来说,ORABM_SERVERSIDE_STRESS 运行在 orabm 命令行下指定的事务数,并返回该会话在采样间隔完成时的 TPS 值。要确保所有并发会话都是在采样间隔期间处理事务,TPS 值仅包括事务的中间的 80%,也即初始的 10%和最后的 10%将忽略掉。

Benchmark Factory™ for Databases 是专门针对数据库做性能测试和容量规划的工具,支持的数据库包括 Oracle,DB2,SQL Server,MySQL 等主流数据库。它可以模拟出数千个用户访问应用系统中的数据库,文件,Internet 及消息服务器。无论是服务器,还是服务器集群,Benchmark Factory 是一种成熟,可靠,高扩展性和易于使用的测试工具。支持的性能测试标准包括 TPC-C,TPC-B,TPC-D,TPC-H 等。Benchmark Factory 工作原理是 Benchmark Factory 控制台通过对模拟的若干个 Agent 场景控制,对目标数据库进行事物操作,记录操作过程目标数据库数据。Benchmark Factory 控制台再记录的数据进行加工,生成运行结果报告,方便地确定系统容量,找出系统瓶颈,隔离出用户的分布式计算环境中与系统强度有关的问题。其架构如图 2 所示:

图 2:Benchmark Factory 架构图

读者也可以根据 TPC-C 规范中的模型,以及输入,输出工作流设计自己的 TPC-C 测试系统,在github上也可以找到许多开源的实现:

这里有一个使用akopytov sysbench和tpcc-mysql的例子MySQL基准测试小脚本:基于sysbench和tpcc-mysql

3. NewSql的tpcc测试

使用percona的sysbench-tpcc测试CRDB和TiDB可以参考下NewSQL数据库压力测试工具系列——TPCC的做法。

使用percona sysbench测试CRDB可以参考cockroachdb 压力测试初试

除此以外,CRDB和TiDB都有自己的TPCC改造版本。

3.1. TiDB的TPCC

TiDB是在Benchmark 5.0的基础上进行了改造,适配了TiDB和Mysql。结果报告见TiDB TPC-C 性能对比测试报告 - v3.0 对比 v2.1,测试方法见如何对 TiDB 进行 TPC-C 测试

TiDB还有benchmark的测试,使用的是akopytov sysbench,测试方法见如何用 Sysbench 测试 TiDB

3.2. CRDB的TPCC

CRDB没有用公认的数据库业界实现了 TPC-C 标准的工具来测试,而是使用了自家实现的一套 TPC-C 工具来测试的。其规范程度没有得到认可,在其官方发布的白皮书中,也提到这套 TPC-C 不能与 TPC-C 标准进行比较。
使用Benchmarksql 5.0进行测试可以参考如何用 Benchmarksql 测试 CockroachDB 性能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355