1.5 OceanBase的性能
对于数据库系统来说,性能一直是最受人关注的方面之一,进行数据库系统的性能测试自然也就成为数据库用户、研发人员经常会执行的一项动作。本节将介绍几种常用的数据库系统测试和工具,同时展示OceanBase在其中取得的测试结果。
为了评价数据库系统的性能,人们设计了多种测试基准(Benchmark)。所谓测试基准,直观来说是提供一种标准的场景,规定了对于数据库系统所施加的负载、数据库中装载数据的体量和结构、评价数据库性能的指标等,有些测试基准还提供了标准的测试工具。测试基准的目的是为数据库系统提供一个相对公平的性能比较环境,目前在数据库系统测试中应用比较广泛的是由TPC发布的一系列测试基准。
事务处理性能委员会(Transaction Processing Performance Council,TPC)是一个由数十家成员公司(包括阿里巴巴集团等)参与的非营利性组织,总部设在美国。TPC的成员基本上都是计算机软硬件厂商或者互联网企业,也有少数几家咨询机构(如Gartner)和研究机构(如中国信息通信研究院)参与其中。TPC的主要工作是制定和发布测试基准的规范,并管理测试结果的发布。
TPC的本意是面向整个计算机行业,它仅制定测试基准的规范,但不提供测试软件。任何组织都可以依据这些规范实现自己的测试环境(包括测试平台和测试软件),然后完成对自家系统的测试。如果某个组织希望将测试结果通过TPC发布,它需要向TPC提交一套完整的报告,包括被测系统的详细配置、分类价格和包含五年维护费用在内的总价格。TPC授权的审核员(TPC自身不做审核)对报告进行核实(可能会对系统中的数据进行核验)后才会将结果发布在TPC的官网上,并依据测试结果进行排名。由于TPC测试基准的开放性,也存在一些商业版或者开源的测试软件,数据库系统的用户或者研发人员可以用这些软件完成自己的测试和对比,为系统选型或者性能改进提供参考。
被数据库业界使用的TPC测试基准主要有TPC-C和TPC-H两种。
(1)TPC-C
TPC-C是TPC针对联机事务处理(On-Line Transaction Processing,OLTP)场景制定的测试基准,它模拟了一个批发供应商的活动。这个公司拥有若干分布各处的销售区域和相应的仓库,随着该公司业务的扩张,新的仓库和相关的销售区域会被建立。按照TPC-C的规定,每一个区域性的仓库覆盖十个销售区域,每个区域服务于3000位客户。所有的仓库都维持着该公司销售的100000种货物的库存。客户会向该公司下新订单或者请求现有订单的状态,每个订单平均由十个订单项(货物)组成。所有订单项中的1%是针对不在当地仓库中的货物,因此需要从其他仓库供货。该公司还需要录入来自客户的付款、处理订单所购货物的递送并且检查库存量来发现潜在的供应短缺。
TPC-C采用了九个逻辑表来表达上述场景所涉及的数据:
1)WAREHOUSE:仓库数据,记仓库数量为W。
2)DISTRICT:销售地区数据,其中包含W×10个地区(每个仓库覆盖10个地区)。
3)CUSTOMER:客户数据,其中包含W×10×3000个客户(每个地区有3000个客户)。
4)ITEM:货物数据,其中包含固定的100000种货物。
5)STOCK:货物的库存数据,其中包含W×100000个货物库存记录(每种货物在每个仓库都有一个库存记录)。
6)NEW-ORDER:新订单数据,包含最新的900个订单。
7)ORDER:历史订单数据,包含W×10×3000个订单(每个客户一个订单)。
8)ORDER-LINE:订单项数据,总数随机,每个订单会随机生成5~15个订单项。
9)HISTORY:客户付款数据,包含W×10×3000个记录(每个客户一个付款信息)。
TPC-C主要考察系统对各种事务的处理能力,为此设计了五类事务:
1)NewOrder:模拟客户下新订单。
2)Payment:模拟客户为订单付款。
3)OrderStatus:模拟客户对近期订单的查询。
4)Delivery:模拟公司系统对客户订单进行配送。
5)StockLevel:模拟公司对库存缺货状态分析。
其中的每一个事务都包含了多个对九个逻辑表的读或者写操作,TPC-C把每一个地区(DISTRICT)看成一个终端(Terminal),该地区所服务的客户以及客户发起的上述各类事务都通过该终端来完成。TPC-C要求在终端中随机执行事务时,除NewOrder之外的事务的占比不能低于一定的限制(Payment至少43%,其他三种事务各占至少4%)。终端执行事务时会模拟客户对查询结果的查看和思考,在等待一个思考时间(Thinking Time)后就会开始执行下一个事务。
TPC-C采用每分钟事务数(transactions per minute,tpmC)来衡量系统的性能,而计算tpmC时只采用NewOrder事务的数量。TPC在其官网[4]上公布了经过其认可的各类基准测试结果,截至2022年2月6日的TPC-C测试结果排名情况如图1.3所示。
图1.3 TPC-C测试结果排名
OceanBase分别于2019和2020两年向TPC提交了TPC-C基准测试的结果并被认可,最终以707351007的tpmC指标被列在性能排行的第一位。更值得一提的是,2020年的测试中,OceanBase的单事务价格(Price/tpmC)也非常低,相比已公布的其他测试的单价也有比较大的优势,这也说明了该次测试结果不仅仅是堆积高性能硬件就能得到的。
对于数据库的爱好者来说,也可以利用一些开源测试工具自行对数据库系统进行TP C-C测试,常用的测试工具有BenchmarkSQL[5]等。
(2)TPC-H
作为一种支持混合事务和分析处理(Hybrid Transaction and Analytical Processing,HTAP)的分布式数据库系统,OceanBase同样也具备较强的联机分析处理(On-Line Analytical Processing,OLAP)的能力。TPC针对OLAP场景也制定了代号为TPC-H的测试基准,TPC-H模拟的是决策支持类应用。目前,学术界和工业界普遍采用TPC-H来评价决策支持技术方面应用的性能。TPC-H可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用。
TPC-H由TPC-D(由TPC于1994年制定的标准,用于决策支持系统方面的测试基准)发展而来。TPC-H用3NF(关系理论中的第3范式)实现了一个数据仓库,共包含八个基本关系。TP C-H考察的是被测系统对于各种复杂查询的响应时间,即从提交查询到结果返回所需时间。TPC-H的评价指标是每小时执行的查询数QphH@size,其中H表示每小时系统执行复杂查询的平均次数,size表示数据库规模的大小,它能够反映出系统在处理查询时的能力。TP C-H是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数。总而言之,TP C组织颁布的TP C-H标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。和TPC-C一样,TPC也负责管理TPC-H测试结果的发布,任何组织都可以将自己的测试结果形成报告提交给TPC,TPC会将其认可的测试结果公布在其官网之上。截至2022年2月6日的TPC-H部分测试结果[6]如图1.4所示。
图1.4 TPC-H部分测试结果排名
从TPC-H的排名页面[7]上可以看到,TPC-H的测试结果按照其所基于的测试数据集尺寸进行了分组比较,其原因在于:“TP C认为把在不同数据库尺寸上测得的TP C-H结果进行比较是有误导性的,并且TPC不鼓励这种比较”。同时,TPC对于性价比(Price/kQphH)也给出了自己的看法:“TPC认为无法比较不同货币单位下的价格或者性价比(Price/Performance)”。因此,TPC-H的排名目前仅以相同数据集尺寸下的QphH指标作为排名依据。
OceanBase也于2021年5月向TPC提交了自己的TPC-H测试报告,该次测试采用的数据集大小为30TB,以15265305的QphH值排名第二。
相对于TP C-C来说,在TP C-H基准上尚没有直接可用的开源测试工具,不过TP C为TPC-H发布了一套用于生成测试数据(DBGen)和查询(QGen)的工具[8],但如何针对生成的数据执行生成的查询则需要测试人员自行解决。