《TPC测试系列》Ⅰ:TPC的前世今生
1 引文最近国产数据库领域内,OceanBase数据库连续两年刷新了TPC-C的世界纪录,引起业内的关注和兴趣。很多人可能还不了解什么是TPC-C,那么今天我们就在这里介绍一下TPC-C以及相关的一些历史。2 来历
很多人喜欢把TPC-C写成TPCC,事实上正确的写法应该是TPC-C。为什么要这样强调呢?因为TPC本身就是一个概念,其全称是Transaction process performance Council,翻译成中文也就是事务处理性能委员会。这是一个非盈利性质的组织,其目的是专门负责制定计算机事务处理能力测试标准并监督其执行。当计算机应用于商业社会,其处理能力就成为所有商家宣扬的亮点,每个数据库厂商都宣称自己是最好的数据库,具有最强大的在线处理能力。早在上个世纪80年代,诸多数据库厂商就开始这样一轮又一轮的竞速宣传。这些厂商都从自己的优势方面宣传,进而宣称自己的系统是最好的,此时可以称为战国时代,没有一个统一的标准能说明如何评判系统的在线处理能力。直至1985年,Datamation, Jim Gray携同其他24位学术界和工业界的同仁发表了一篇名为《A Measure of Transaction Processing Power》的文章,用来阐述一种衡量事务处理能力的度量方法。作者在文中提出了一种在线事务处理能力测试方法,称为"借方信任"(Debit Credit),这是一种系统级标准,因为其中包括了网络和用户交互的开销等等诸多方面,全面的用来对整个系统进行度量。同期,伟大的IT公司IBM也提出了一个测试标准,称为TP1(Transaction Process),主要是度量系统在批模式下处理自动提款事务的性能。考虑到IBM的大佬地位(Structured Query Language就是IBM在1974年的两位科学家提出,并在IBM的System R上实现,也就是现在大家非常熟悉的SQL),该标准得到一些计算机系统和数据库厂商的接受与认可。此时还没有TPC委员会什么事,因为在这两种方法推出的前后,工业界的情况非常混乱,没有一个公共认可的机构来制定公共认可的标准,并且该标准的执行能够被监督。从1985年到1988年,一些厂商根据自己的优势随意用TP1或DebitCredit进行测试,有些厂商甚至删掉Debit Credit标准中的一些关键要求以期改善他们的测试结果。这里引用亚里士多德的一句话,”good laws, if they are not obeyed, do not constitute good government.”,大意是即使也有好的规则,如果不能遵守,这些规则也不会形成好的结果。这也是之前提到,TPC委员会还具有监督职责的原因。这一混乱的局面直到1988年8月10日,Omri Serlin成功地说服8家公司成立了TPC,也就是前面提到的事务处理性能委员会,来制定标准并对标准的执行进行监督才逐渐的结束。
介绍到这里,大家应该了解了TPC来历,也就是TPC不是测试标准,而是一个委员会一个组织,这个组织是来制定标准并进行标准执行的监督。这个委员事实上是有多个成员的,比如现在就有这些成员,很有幸随着国内厂商的成长,阿里巴巴、华为和联想都成为其中的成员。
3 TPC-C标准
讲了这么久的TPC(事务处理性能委员会)的来龙去脉,现在可以讲TPC-C了。简单的理解,TPC-C就是TPC组织制定的编号为C号标准,这也是为什么前面强调的TPC和C之间要有一个“-”号,诸如TPCC这样的写法是不准确的。事实上,TPC-C并不是TPC组织的第一个标准,TPC的第一个标准是编号为A的TPC-A。这是结合Debit Credit测试标准所给出的模型和观点,TPC在1989年11月发布了第一个测试标准,并在1990年7月发布了第一个TPC-A结果报告,在后续的4年内,33家公司接受了TPC-A测试标准,并有115个不同的系统发布了TPC-A的测试结果,这达到了TPC-A测试的顶峰。TPC-A的测试标准在现在看来还有很多缺陷,但这是具有历史意义的一个时刻,因为这意味着混乱的市场上,终于有一个公共认可的标准,就像是第一缕曙光出现在黑夜,光芒终将驱散黑暗,随后TPC推出了一系列的标准,其中TPC-C统治市场达到十几年。
TPC的成员很清楚TPC-A具有其局限性,随着计算机技术的进步,理论的不断更新,硬件性能的不断提升,测试标准也需要不断的进步,于是更好、更健壮、更贴近现实世界的测试标准和模型需要不断的推出。在1992年,最为大家熟知的TPC-C标准被公布,该模型模拟商品批发的交易模式,并获得普遍的接受。这是TPC组织花费2年多研制和开发的标准,当前最新版本为2010年最后修订的5.11.0,整个测试标准经历将近20年的改进。此时参与TPC-C制定的委员会成员是这些IT大佬们,时过境迁,像Sybase这样的曾经占有大量市场份额的数据库大厂渐渐销声匿迹,不得不令人唏嘘。
4 TPC-C标准模型
这里我们简单介绍TPC-C的标准模型,该模型是基于是基于商品批发模型构建的,数据库设计上共有9张表,其关系如下图所示,这里我们会简要的说明模型中的表。
Warehouse是仓库表,在模型中是用来记录存储商品的仓库。District是区域表,模型中用来记录区域信息,每个仓库会为10个区域提供批发,因此如图中所示,仓库和区域是1对10的关系。Customer是用户表,每个区域内会有3000个用户,这些用户和该区域所属的仓库进行产生交易(在特殊情况下会到其他仓库进行交易)。Order是交易表,用来记录用户的商品交易,一个交易下可能会有5到10个商品的具体交易项。New-Order是新订单表,用来记录新订单,是Order表中订单的缩略,当订单完成后会将对应的记录从New-Order表中删除。围绕这些表,TPC-C模型定义了5个操作,分别是创建订单、订单支付、订单状态查询、发货和库存检查。通过5个操作,模拟了以仓库为核心的批发系统的运作。并最终通过对每秒钟创建订单的统计,得到tpmC(每分钟交易数)这个用来衡量整个系统性能的数值。
不过就像TPC-A局限于当时的情况,TPC-C受限于商品批发的交易模型,用户动则使用上万的磁盘阵列的硬件堆积,这是TPC委员会所不愿意看到的。而且B2B、B2C等新型应用的兴起,TPC-C标准所定义的5种交易模型不能涵盖新型交易应用,于是TPC委员会于2007正式推出了新的数据库性能测试模型TPC-E,用于模拟证券市场上,经纪人、交易所和用户进行的证券交易行为。事实上,前面提到的TPC-A、TPC-C、TPC-H和TPC-E仅仅是TPC组织所公布的部分标准,TPC组织公布的还有诸如TPC-H等诸多针对不同场景的性能标准。下面我们简单的列出一些当前TPC委员在推行的标准和废弃的标准。推行中的标准废弃标准
5 总结至此,对TPC标准委员会和制定的标准,我们都有大概的了解。后续,我们会推出一些针对TPC标准的文章,谢谢诸位赏光~
页:
[1]