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标准的文章,谢谢诸位赏光~
腾讯数据库技术团队对内支持QQ空间、微信红包、腾讯广告、腾讯音乐、腾讯新闻等公司自研业务,对外在腾讯云上依托于CBS+CFS的底座,支持TencentDB相关产品,如CynosDB、CDB、CTSDB、MongoDB、CES等。腾讯数据库技术团队专注于持续优化数据库内核和架构能力,提升数据库性能和稳定性,为腾讯自研业务和腾讯云客户提供“省心、放心”的数据库服务。此公众号旨在和广大数据库技术爱好者一起推广和分享数据库领域专业知识,希望对大家有所帮助。