深圳幻海软件技术有限公司 欢迎您!

TPC-C测试

2023-03-28

TPC-C测试TPC是国际事务处理性能委员会简称,该组织是一个负责制定性能测试基准的非盈利委员会,其制定的TPC-C测试可衡量数据库在线事务处理能力。性能和性价比是TPC-C测试的两个衡量。性能由tpmC(transactionsperminute,tpm)衡量,C指TPC中的C基准程序,它的定义是

TPC-C 测试

TPC 是国际事务处理性能委员会简称,该组织是一个负责制定性能测试基准的非盈利委员会,其制定的 TPC-C 测试可衡量数据库在线事务处理能力。

性能和性价比是TPC-C 测试的两个衡量。性能由 tpmC(transactions per minute,tpm)衡量,C 指 TPC 中的 C 基准程序,它的定义是每分钟内系统处理的新订单个数。性价比衡量数据库单位成本,以系统的总价格/tpmC 数值得出。

TPC-C 是开放的测试基准,这样即便是参与测试公司的硬件架构和数据库软件架构有所不同,只要符合其规范,都可以参与测试。同时,TPC-C 测试非常严谨,极大程度杜绝作弊:

首先,TPC-C 要求被测数据库必须满足数据库事务的 ACID,即原子性、一致性、隔离性和持久性,其中隔离性为可串行化隔离级别,持久性要求能够抵御任何单点故障等。这是对 OLTP 数据库的基本要求。

第二,TPC-C 规定被测数据库的性能(tpmC)与数据量成正比,事实上真实业务场景也是如此。TPC-C 测试的基本数据单元是仓库(warehouse),每个仓库的数据量通常在70MB 左右(与具体实现相关),TPC-C 要求终端用户在选择事务类型时,需要按照规定的比例选择五种事务,终端用户每个事务都有一定的输入时间(对每种事务分别固定)和一定范围的随机的思考时间(一个对数函数),根据这些要求,每个仓库所能获得的 tpmC 值的理论上限是12.86(假设数据库的响应时间为0)。

第三,TPC-C 要求被测数据库能够以平稳的性能长期地运行。测试时,去掉启动预热(ramp up)和结束降速(ramp down)时间后,被测数据库至少要性能平稳地(steady state)运行8小时,其中性能采集时段(不少于2小时)内的性能累积波动不得超过2%。

第四,TPC-C 要求被测数据库的写事务的结果必须在一定时间内数据落盘(指数据库数据,不是日志,事实上 redo log 在事务提交前就落盘了),对于具备 checkpoint 功能的数据库,checkpoint 的间隔不得超过30分钟,checkpoint 数据持久化的时间不得超过 checkpoint 间隔。

第五,业务定向优化(profile-directed optimization,PDO)可以提升软件的性能,TPC-C 也允许使用 PDO,但有一些限制,比如采用 PDO 优化的版本需要在客户使用,数据库厂家需要对 PDO 优化的版本提供技术支持等。为了避免可能出现的异议,OceanBase 没有使用 PDO。

TPC-C 的测试成本非常高。如 OceanBase 这次的测试,从 FDR 来看,根据标准要求公开的3年总持有成本中硬件成本就有约为6亿人民币,包括软硬件及服务在内的三年总成本为28亿人民币。OceanBase 团队表示,因为租用了阿里云公有云的 ECS 虚拟机,来替代物理服务器和存储,可以便利扩容/缩容,也节省了成本,“实际测试中我们只需要在阿里云上购买相应 ECS 资源很短的时间,远远低于之前榜单上其它厂商测试的花费”。

然而过高的成本等因素导致一些公司不再参与 TPC-C测试。Oracle 上次测试还是在2010年。当时,Oracle 公司的 SPARC T3-4 Supercluster以30 249 688 tmpC 创造了 TPC-C 性能测试的新纪录。

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树数据库组成45310 人正在系统学习中