在上一篇文章中,我提到了PolarDB数据库在TPC-C上打榜的世界纪录,以及从OceanBase、TDSQL开始的中国数据库登顶历程。有朋友私信提出了新的问题,也就是这样的基准测试能否拉齐对比,例如对于分布式,用同样的CPU、同样的节点数量等,以真实的比拼性能;此外,还有朋友提到,这样的测评的真实性与行业意义。

关于这些问题,恰好我在《数据库简史》一书上考证和记录过关于基准测试的一些故事,我摘录一些书中的内容并进一步补充,与大家分享一些历史趣事。
当计算机系统和应用日益普及,供应商之间的竞争日趋激烈时,成本和性能就成为了用户最关心的问题,谁是性价比最高的OLTP数据库成为了焦点。
1983年,威斯康星大学教授戴维•德维特(David DeWitt)发布了威斯康星基准,该基准由一组简单查询组成,包括选择、投影、连接和聚合。

德威特随基准还公布了针对几个数据库的评测结果,其中包括大学版INGRES(U-INGRES)、商业版INGRES(C-INGRES)、Oracle、SQL/DS等产品。下图展示了最初公布的一组测试结果:

显而易见,结果对INGRES十分有利,Oracle是几乎所有产品中性能最慢的,这在 Oracle 引起了轩然大波。据说,震怒之下埃里森曾试图去影响大学解雇德威特,这个努力当然没有得逞。

埃里森的性格从来不是甘随人后,他只要第1名。他随后在内部整治了开发团队,要求工程师们全力以赴提高在基准查询中的性能,经过改进,包含最先进查询处理组件的产品在测试中取得了业界最高的性能成绩。从那时起,Oracle内部订立了一项名为 WAR 的政策,意为 "赢得所有评测"(Win All Reviews),打赢每一次战争。为了预防以外,Oracle公司要求第三方在发布Oracle的性能结果之前必须获得许可。
虽然威斯康星基准引发了广泛的争议,但是也以事实证明,基准测试是促进行业提升的有效手段之一。市场也迫切需要一个中立的、明确的性能衡量标准,吉姆·格雷为此提供了一个答案。

1984年,在天腾计算机(Tandem Computers)工作期间,吉姆·格雷撰写了 "交易处理能力的衡量标准",并将其分发给一批工业界和学术界的专业人士,征求他们的意见。在收到评论后,他慷慨地将工作归功于所有向他发送评论的人,并在1985年4月1日在名为Datamation的杂志上发表。这篇论文是1988年交易处理性能委员会(Transaction Processing Performance Council,TPC)成立的动因。

格雷在论文中提出了一个名为“Debit-Credit”的借贷模型,定义了一个真正的系统级基准测试。通过借贷模型的基本逻辑评测,得出数据库系统在满足一定响应时间要求下的性能指标和总系统成本。Debit-Credit基准测试很快面临了性能欺诈,供应商们常常删除模型中的关键要求以提高性能结果,并利用虚高性能数字做出夸张的营销文案。
为了解决这个问题,奥马里·塞林(Omri Serlin)领导下的行业分析师于1988年发起创建TPC,旨在建立一个负责监督和控制基准测试过程的组织。,,并创造了相应的流程来监督和控制基准测试结果的发布。

TPC在1989年11月发布了第一个基准测试TPC-A。1990年7月公布的第一个TPC-A结果是每秒 33 笔交易。总计发布了约300个TPC-A基准测试结果。随后,TPC推出了TPC-B基准测试,共有73个不同的系统发布了130个测试结果。

如果没有积极的流程来审查和挑战基准合规性,TPC就无法保证其所承诺的公平竞争。1990年至1991年,技术顾问委员会(TAB)成为了TPC的下设机构,公众或公司可以通过它来挑战已发布的TPC结果,以确保基准测试的合规性。
1993年4月,咨询公司Standish Group指控Oracle在其数据库中添加了一个专用功能——离散事务(Discrete Transaction),从而夸大了TPC-A结果,“违反了TPC的精神”,客户不会在生产中使用离散事务,因此是基准特殊功能。Oracle对这一指控予以强烈反对,并表示他们遵循了TPC基准规范书的所有要求。
为了完善基准测试审查流程,TPC采取了几项重大改革。其中,新的“反基准测试特殊功能禁令”全面禁止产品包含专门为基准测试开发的特殊功能,成为确保相关基准测试的TPC流程的基石。
1993年的争议导致TPC意识到,如果结果的可信度受到挑战,投入基准测试的数百万美元将完全被浪费。经过当年9月和12月的一系列讨论,TPC通过了一项措施,设立一组经过TPC认证的审核人员,在每个结果提交给TPC作为官方结果公开之前,对测试结果进行严格审查,事实证明这一流程非常有效。
TPC-C于1992年7月被批准,并成为了当下最流行的基准测试,从1995年1月开始,TPC-A/B都被终止了。
TPC-C是一个OLTP基准,以数据库每分钟处理的事务数 (tpmC) 作为主要的测试结果,可以用于评估数据库系统的性能,并与其他系统进行比较。通常,TPM(Transactions Per Minute)值越高,表示数据库系统处理事务的能力越强。TPC-C通过9个数据表,模拟一个复杂的批发供应商业务场景,涵盖了多种事务类型和数据模型,能够全面评估OLTP系统的性能。


TPC-C测试包含五种不同类型的事务,这些事务以不同的比例并发执行。TPC-C的性能指标是tpm-C,即每分钟处理的新订单事务数量。这个指标综合反映了系统的业务吞吐能力。

在TPC-C基准测试下,每个tpmC的成本还可以用于度量不同数据库的性价比。所以其实对比不同的数据库,性价比可以作为一个关键指标,通常几年间的可比价格是容易计算的,对于当下的集群数据库,是很容易得出一个单位性能数据的。此外,我比较关注性能密度,也就是通过单数节点的tpmC值来量度。因为当下,机房的空间成本愈加突出,分布式需要通过提升性能密度来降低空间耗用。
TPC-C基准公布之后,在很长一段时间内,成为了各厂家争夺的焦点。在上世纪90年代,Oracle和Informix之间展开了火药味十足的争斗。Informix经常在报刊上刊登整版的广告,宣传其发布了领先的测评记录。下图是1993年Informix的广告。Informix-OnLine数据库一度称为了Oracle的强劲对手。

Oracle在TPC-C榜单上的最后提交记录是在2013年,当时Oracle使用一台SUN的服务器 T5-8 的8路服务器,实现了855万的tpmC成绩。每tpmC成本为0.55美元。这在当时是相当出色的表现。现在也在性能榜单上名列第7名。

时至今日,在全球数据库市场上,传统关系型数据库已经成熟,所以北美的产品基本上不再打榜,也没有有效活跃的纪录了。目前主要是中国(阿里云、腾讯云)、韩国(SunjeSoft)等新兴市场的数据库产品在进行TPC-C的评测。下图是当下TPC-C榜单上的有效纪录。

对于处于后发的产品,一次完整的性能测评,也意味着产品在国际标准上的成熟和企业实力的完备,是具备相当的行业参考价值的。





