OceanBase 二次 TPC-C 测试性能提升 10 倍
导读 | 时隔半年,蚂蚁金服的自研数据库 OceanBase 又去做了 TPC-C 测试。TPC 去年10月2日和今年5月20日公布的测试结果显示,OceanBase都是榜单第一。性能方面,去年OceanBase 的测试结果是6088万 tpmC,今年则是7.07亿 tpmC;TPC-C benchmark 价格也从¥6.25/tpmC 降低到¥3.98/tpmC。不过,一些数据库公司,如Oracle并未参与这两次测试。 |
OceanBase 是一个支持海量数据的高性能分布式数据库系统,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。2017年开始对外商用。
之所以在短时间内做两次测试,是因为 OceanBase 团队认为首次测试尚未充分发挥 OceanBase 分布式架构的真正实力,同时也希望二次测试可以体现其性价比优势。两次 TPC-C 测试采用的都是OceanBase 2.2版本的 Oracle 兼容模式,目前蚂蚁金服内部以及外部商业银行均有 Oracle 业务已经迁移到 OceanBase 的 Oracle 模式。
性能方面。二次测试使用了1557台84核 ECS i2d 服务器,一期仅有207台服务器参与测试。这也证明 OceanBase 软件的分布式处理能力提升,软件性能的提升最终使 tmpC 结果提升十倍以上。
其次,单 CPU 核性能也在提升。基于同样的 CPU 核,第一次 TPC-C 测试使用了20764=13,248个 vCPU(虚拟机 CPU)核,本次则使用了155784=130,788个 vCPU 核,CPU 核数不到第一次的10倍,但整体性能达到了第一次的11倍以上,其中还有机群规模提升所带来的更大损耗。
得益于 OceanBase 软件单核性能的优化以及软件价格的优化,TPC-C benchmark 价格下降了¥2.27/tpmC。
OceanBase 团队透露,从测试收益来看,首先它满足了 OceanBase 自身对于性能测试的需求,结果具有公认的参考价值;其次,7亿 tpmC 证明了分布式数据库可以满足严格要求下的事务处理,意味着能够满足互联网、金融、电信、政府等关键领域的核心系统的事务处理需求。
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 性能测试的新纪录。
OceanBase 团队正把更多精力投入到外部市场。未来,OceanBase 的产品目标之一是在一套引擎里同时支持 OLAP 和 OLTP,即 HTAP,“在走访客户的过程中我们发现,绝大部分业务既需要 OLTP 又需要 OLAP”。
HTAP 是混合 OLTP 和 OLAP 业务同时处理的系统,Garnter 公司在2014年提出。根据最新定义:混合负载(HTAP Hybrid Transactional/Analytical Processing)在保留原有在线交易功能的同时,也强调了数据库原生计算分析的能力。它被认为打破了事务处理和分析之间的“墙”,支持更多的信息和“实时业务”的决策。