事务处理性能测试委员会(TPC)简介 |
中国科学院软件研究所 王青 TPC的历史与概况 事务处理性能测试委员会TPC(Transaction process performance Council)是一个 专门负责制定计算机事务处理能力测试标准并监督其执行的组织。 80年代初出现了一种新的在线计算模式,与70年代占统治地位的批计算模式不同,它 采用相对单纯的方式直接通过在线数据库系统进行简单的事务处理,由此标志着在线事务 处理工业的诞生。商业日常事务处理自动化的第一个应用程序是自动提款事务处理(Aut omated teller transaction—ATM)。在商业化社会,谁拥有最好的在线事务处理系统— OLTP(Online Transaction Process),谁就可以赢得更多的客户。于是问题就来了,如何 证明谁是最好的?当然应该用一种公共的测试标准。80年代中期,IBM提出了TP1(Transac tion Process)测试标准(Benchmark),并得到一些计算机系统和数据库厂商的接受与认可 。TP1主要是度量系统在批模式下处理ATM事务的性能。但TP1标准有两个缺陷:一是忽略 网络和OLTP系统中用户交互部分的系统开销,因而可能产生不真实的性能报告;二是标准 的定义太贫乏,并且无法监控标准测试的执行过程。因此,TP1的影响较小,只有少量的用 户。 1985年2月1日,Jim Gray与其他24位来自科学界和工业界的同仁发表了一篇名为《事 务处理能力的度量(A Measure of Transaction Processing Power)》的文章。作者在文 中提出了一种在线事务处理能力测试方法,称为"借方信任"(DebitCredit)法。与TP1标准 不同,Gray提出的标准是一种真正的系统级标准,其中包括了网络和用户交互的开销。De bitCredit标准发布前后,工业界的情况非常混乱,没有一个标准来监督测试的执行和结果 发布。从1985年到1988年,一些厂商随意用TP1或DebitCredit进行测试,有些厂商甚至删 掉DebitCredit标准中的一些关键要求以期改善他们的测试结果。直到1988年8月10日,O mri Serlin成功地说服8家公司成立了TPC。TPC按商业领域的公共理解来定义事务(tran saction)这个术语,认为事务就是商业活动中货物(库存管理)、服务(订票)、金钱(银行 )的交换。典型的事务一般都会涉及数据库系统中数据的更新。 利用DebitCredit标准所给出的模型和观点,TPC在1989年11月发布了其成立后的第一 个标准,即TPC-A。TPC-A与DebitCredit的不同点主要在于: ·要求90%的事务处理应在2秒内完成; ·将每个测试系统需要的交互终端数降低到10台,而且规定终端的费用应包含在系统 价格中。 第一个TPC-A结果报告是在1990年7月发布的。4年后,TPC-A达到其顶峰——33家公司 接受了TPC-A测试,115个不同的系统发布了TPC-A的测试结果。 TPC-A的主要功绩在于澄清了混乱的市场,将80年代中期建立的TP1和DebitCredit模 型法典化,形成了标准。但是,TPC的成员们很清楚,必须随着计算机技术的进步,不断提出 更好、更健壮、更贴近现实世界的测试标准和模型。90年代,TPC又发布了两个新的测试 标准:OLTP测试标准的下一代产品TPC-C和决策支持系统测试标准TPC-D。TPC-C公布于19 92年7月,TPC-D公布于1994年4月。 TPC-C和TPC-D在其各自的领域都获得了普遍的接受。但是计算机系统的能力在无情 地增加,测试的开销也必须符合和顺应这种增加。目前,新的TPC-C和TPC-D版本计划将在 1999年发布。 1998年,TPC发布了新的基于Web商业(Commerce)的测试标准──TPC-W,用来表示一些 通过Internet进行市场服务和销售的商业行为,如零售店、机票预定等等。TPC-W测试系 统处理用户浏览商业Web站点和通过商业Web站点操作订单的性能。由于在整个Web OLTP 环境中,网络连接和人机交互的情况变幻不定,TPC-W没有考虑这些部件的开销。所以,TP C-W可以看作是一个服务器的测试标准。 当厂商发布TPC结果时,他必须面对竞争者的挑剔和指责。每一个TPC结果都必须附带 一个完全公开的报告(FDR)。那么,当人们阅读和审查FDR时,如果有异议,他将怎么办呢? 如何记录这些异议以及如何裁决?从1990年到1991年,TPC致力于建立一些政策来解决这个 问题。技术公告板(TAB)成了大家对TPC测试报告发表异议的地方。TAB建立了一个公正、 慎重地审查TPC异议的机制,并一直保留至今。TAB彻底研究和审查人们提出的异议,并向 委员会作出建议。TPC则认真听取TAB的报告,经过充分的讨论和辩论,对异议进行投票表 决。 TPC机构也认识到,一旦TPC的测试结果被否决,运行TPC测试所花费的数百万美金就白 白浪费了。虽然TPC的FDR审查过程是好的,但它只有在TPC的测试结果发布之后才能进行 。一旦异议成立,TPC和那些软件公司的信誉将一同受损。因此,TPC成立了一个检查审计 组,专门负责在发布结果前审查和证明TPC的测试结果。这个TPC的审计系统有效地阻止了 大部分错误的TPC结果被发布出来。 比较不同系统的性能优劣需要公共的衡量标准。用户需要公共标准来帮助他作出购 买决定。厂商则需要它为自己的产品进行市场宣传。TPC解决了计算机软件系统性能评价 标准的纷争与混乱,为用户和厂商提供了双方的利益。TPC的标准还可以裁剪,以更恰当地 表示具体的系统。许多政府部门和公司都购买TPC标准作为其特定计算机系统性能评价体 系的基础。 哪一个TPC测试标准适合用户的应用系统呢?由于用户应用系统的环境是各种各样的 ,而TPC的测试标准只能是相对抽象和简单的模型。所以TPC的测试标准只能作为比较不同 系统性能的尺码,而不能当作精确度量具体应用环境性能的工具。用户应该深入了解TPC 的测试标准,并对其各种模型进行细致的分析,以确定哪一类的用户交互处理、数据库设 计、数据库大小、事务复杂性、存储备份测试等模型更适合于用户的系统环境,然后用来 对安装在用户环境中的不同系统进行测试和比较。 TPC-C测试标准 TPC-C 是TPC组织花费2年多研制开发的结果,是测试在线事务处理能力的新一代产品 。它的主要特点有: 1. 将复杂的OLTP模块化; 2. 应用系统可以形成支持批处理的管理序列; 3. 提出了测试标准的概念模型——命令入口(Order Entry)。 TPC-C定义了5种事务类型,即: ·New-Order:客户键入的一个新命令,如客户键入的一个查询要求; ·Payment:更新客户帐号的金额以反映新的交易付帐; ·Delivery:提交命令(以批处理模式提交执行); ·Order-Status:检索用户最近命令的状态,即检查其他事务的执行状态; ·Stock-level:货物交易事务,如库存管理中的出入库相关事务。 事务吞吐量和性能价格比是TPC的两个重要的测试指标。吞吐量的定义是:当系统执 行Payment、Order-Status、Delivery、Stock-level等4种类型的事务时,每分钟可完成 多少New-Order事务。5种TPC-C事务都需要一定的用户响应时间,New-Order事务的响应时 间一般在5秒。TPC的性能价格比并不仅仅是针对计算机或宿主机的费用,这只是TPC价格 体系中的一部份。通常TPC的测试标准涵盖用户可能购买的各种系统环境的所有价格因素 ,诸如终端、通信设备、事务监视器和数据库服务器等软硬件,还包括计算机系统或宿主 机、后援存储器以及3年的维护费用。 这两个指标哪一个更重要?如何知道哪一个系统有最好的TPC结果?这要依具体的需求 而定,例如应用系统对环境的要求很高,而关键任务的吞吐量指标显然更为重要。另一方 面,由于用户一般都在一定的价格范围内购买系统,吞吐量必须与整个系统的费用相平衡 。所以通常说来,事务吞吐量愈高,性能价格比(注意实际上是价格性能比)愈低则表示TP C的测试结果愈好。 TPC-C 要求所有事务符合ACID测试,并要求数据分布对应用系统所有节点透明,所有 的数据操作都只对整个数据库,而不管数据的实际物理位置。 TPC-C的性能取决于计算机(硬件)、操作系统、数据库等很多因素。许多计算机及数 据库厂商都有不断更新的测试结果,并在Intenet网上公布(http://www.tpc.org)以便查 询。就操作系统而言,Windows NT 的性能价格比较好,通常是Unix的2~3倍,但Unix在性 能上具有很好的可扩展性。 TPC-D测试标准 TPC-D是对复杂的决策支持系统进行测试评价的标准,它对决策支持系统形成特殊的 查询,并适用于多用户环境。TPC-D与其它TPC测试标准的关系如图1所示: @@0841200.JPG;图1@@ TPC-D与其它TPC标准的关系 TPC-D用DBGEN产生数据库。DBGEN是TPC-D的一部分,用C语言编写。使用DBGEN是TPC -D的强制性建议。TPC-D数据库的内容必须可以被抽出。TPC-D报告中必须反映数据库的 装载时间,包括建立索引和数据静态更新的时间。但数据库装载时间不包括在基本度量指 标中。 为了较好地反映现实应用系统,TPC-D用SQL92编写了17个实现商业问题的查询,并定 义了查询的通用性,由此定义了查询集。TPC-D用QGEN产生的随机常数替代查询中的参数 ,规定查询中没有宿主变量,并且没有静态SQL。另外TPC-D不允许修改查询结果。TPC-D执 行3种测试,即能力(Power)测试、吞吐量测试和数据库装载(Load)测试。 1. 能力测试 ·以单流方式提交查询(无并发) ·每一个查询集都是17个查询的不同组合 2. 吞吐量测试 ·多个并发查询流 ·单更新流 3. 性能价格比 4. 数据库装载测试 数据库装载测试不是TPC要求的基本测试,一般放在总结中。 结语 TPC测试标准是一个容易理解、开销稳定的测试标准。目前仍在继续发展两个主流产 品,即TPC-C和TPC-D,以使之与OLTP和决策支持领域的发展保持一致,同时将在Web商业领 域开辟新的天地(TPC-W)。 TPC-C的测试结果不能与TPC-D等其他的TPC测试结果进行比较,因为它们在本质上是 不同的,分别使用不同类型的应用系统。 许多用户在订购软件产品如操作系统、数据库时,都希望首先了解同类产品的性能、 性能价格比等指标,TPC组织正好可以提供这样的服务。如要获得更多、更全面的TPC结果 信息,首先可以从TPC官方机构订购一份公开报告(Full Disclosure Report),这些报告提 供了进行TPC测试的软件系统的配置、测试实施以及费用等全部文档,另外还有一些附加 的性能数据。此外,用户还可以与厂商直接联系,获得更多的性能和价格信息,以便进行正 确的选择。 |