模拟装电脑性能测试

发布时间: 2023-04-17 10:10 阅读: 文章来源:转载
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,以获得最佳测试效果。

2.2. TPC-C 输入数据流

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

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

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

New-Order: 45% Payment:43% Delivery:4% Order-Status:4% 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 所示:

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

Percona-Lab tpcc-mysql、sysbench-tpcc:由percona开发出来的针对mysql的基于tpcc规范的测试工具,用来压力测试。可参考MySQL测试工具之-tpcc、tpcc-mysql 压力测试 akopytov sysbench:功能强大的sysbench工具,可用于postgresql的测试(参考PostgreSQL 11 tpcc 测试(103万tpmC on ECS) - use sysbench-tpcc by Percona-Lab) benchmarksql:5.0去除了mysql的支持,pingcap在5.0的基础上增加了对mysql和tidb的支持。使用可见benchmarksql 5.0 支持对MySQL的TPC-C测试、TPC-C 测试说明、BenchmarkSQL介绍

这里有一个使用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 性能

•••展开全文
相关文章