蚂蚁金服自研数据库OceanBase如何登顶TPC-C

简介: 蚂蚁金服自研的分布式关系数据库OceanBase拿下了2019数据库“世界杯”(TPC-C基准测试)冠军。

10 月 2 日,国际事务处理性能委员会(TPC)宣布:在最新发布的 TPC-C 排行榜中,蚂蚁金服自研数据库 OceanBase 位列第一。InfoQ 记者第一时间采访到蚂蚁金服研究员、OceanBase 主架构师杨传辉(日照),请他解读这份 TPC-C 榜单,同时介绍 OceanBase 积累九年多才正式参与 TPC-C 打榜的过程和意义。

请从专业性和权威性,参与标准和参与流程上,介绍一下 TPC-C 的测试结果,对于数据库厂商来说意味着什么?

TPC 是由数十家会员公司创建的非盈利组织,成立于 1988 年,总部设在美国,图灵奖得主 Jim Gray 是奠基人。TPC 的成员主要是业界主流的计算机软硬件厂家,其职责是制定企业级应用基准测试考评的标准规范,并且衡量整体系统的性能和性价比,管理测试结果的认证和发布。Oracle、IBM、微软等公司的多个数据库产品曾多次参与这个测评并且是主要领先成绩的保持者。TPC-C 是 TPC 组织制定的关于 OLTP 数据库事务处理能力的基准测试,金融、电信、政府等关键领域的客户一般参照 TPC-C 结果来衡量各个数据库厂商的事务处理能力。

只有在 TPC 官方网站上得到认证,得到国际机构审计的测试结果才是 TPC 机构认可的测试结果。TPC-C 认证要求非常严格,大到性能、功能、数据一致性和容灾能力,小到测试过程中使用过的鼠标键盘价格,都需要严格披露,确保测试可复现且与真实业务场景保持一致。OceanBase TPC-C 仅仅认证过程就花费超过半年时间

数据库的核心能力包括性能、成本、功能、生态等等,而 TPC-C 是全球 OLTP 数据库最权威的性能测试基准。TPC-C 登顶是每个 OLTP 数据库厂商的梦想,登顶意味着具备世界级的事务处理能力,能够满足无论是互联网还是金融、电信、政府等关键领域的核心系统的事务处理需求。目前在 TPC-C 指标上,蚂蚁金服是唯一一家中国上榜企业。

OceanBase 此前参与过该基准测试吗?取得的成绩是什么?

几乎每个 OLTP 数据库都会在测试环境中跑 TPC-C 基准测试,OceanBase 也不例外。虽然 OceanBase 在阿里巴巴“双十一”等业务场景中积累了非常好的高并发事务处理能力,但 TPC-C“打榜”难度非常之大,OceanBase 积累了九年多才选择正式参与 TPC-C 打榜。

请详细介绍此次 OceanBase 参与测试的全过程,包括:如何参与?过程中需要配合提交什么?

每家数据库厂商都可以参与 TPC-C,只需要邮件联系 TPC 官方组织报名参加即可,关键在于数据库厂商有没有能力通过测试并得到好的结果。

OceanBase TPC 审计分成三个阶段:第一个阶段称为准备阶段,根据 TPC-C 规范的要求实现必须的功能并做好性能优化,这个阶段需要把测试规范理解清楚,并把每个疑问都和审计员通过邮件沟通清楚。需要注意的是,TPC-C 审计非常严格,一定要细化到 TPC-C 规范的每个条目,任何一条不符合规范都会导致测试不通过;第二个阶段称为现场预审计,美国的审计员来到蚂蚁金服杭州总部,和 OceanBase 团队成员一起完成功能测试、ACID 测试、性能测试、宕机测试、架构和代码 Review、性能成本计算等全部过程。当时在这个过程中发现了一些问题,OceanBase 团队后续几周进行了全部的改正;第三个阶段称为正式审计,OceanBase 团队按照审计员给的检查列表修改完成所有预审计阶段发现的问题,每一项都得到审计员确认后再运行最终测试,最后完成 FDR(Full Disclosure Report)完整披露报告并向 TPC 技术委员会正式提交结果。

我们应该如何看懂目前官网披露的 TOP10 结果中,各类相关指标背后的意义?比如性能、价格、CPU...

TPC-C TOP10 结果中,有些是数据库公司测试的,有些是硬件公司测试的,不同测试的硬件架构和数据库软件架构都可能有所不同。TPC-C 是开放的测试基准,不管采用什么架构都可以来参加测试,只要符合 TPC-C 规范即可,最终的衡量标准主要是两个:一个是性能(tpmC),还有一个是性价比(price/tpmC)。性能表示数据库能够跑多快,性价比表示数据库的成本能够做到多低。

关于性能,TPC-C 测试模拟商品交易,包含五种事务:NewOrder 创建新订单(占比 n/a)、Payment 支付订单(占比>=43%)、OrderStatus 查询最近订单(占比>=4%)、Delivery 批量配送订单(占比>=4%)和 StockLevel 库存状态分析(占比>=4%)。TPC-C 虽然没有规定 NewOrder 事务的占比,但通过其它四种事务的占比可以反推 NewOrder 占比<=45%。而 TPC-C 的性能指标用 tpmC(transaction-per-minute-C)来衡量,表示每分钟执行的 NewOrder 事务数,因此,实际测试时,NewOrder 占比往往都是 45%,相应地,Payment 占比 43%,另外三种事务占比 4%。另外,TPC-C 测试要求 10% NewOrder 分布式事务,以及 15% Payment 分布式事务。

关于价格,TPC-C 测试综合计算软硬件价格以及三年服务价格,软硬件价格除了数据库和存储,还包括针对 TPC-C 场景开发的应用系统,甚至连测试使用的台式机也需要计算在内。软件价格和硬件价格最好区分开来,硬件价格代表商业数据库的真实成本,软件价格代表商业数据库的利润。例如,OceanBase 这次 TPC-C 测试的总体价格虽然不低,但是硬件价格占比很低(不到 18%),真实性价比远远高于第二名 Oracle,整体性价比和 Oracle 比较接近更像是一种定价策略。另外,TPC-C 测试要求磁盘至少能够存储 60 天的数据量。集中式数据库往往存储一份数据,而 OceanBase 采用 Paxos 协议实现 RPO = 0,在 TPC-C 测试以及主流生产系统中都存储了 2 份数据和 3 份日志,相当于 OceanBase 需要提供 120 天的存储容量并计入价格。

关于 CPU,这里有两个关键点

1、对于集中式架构,除了数据库使用 CPU 之外,专用存储设备也需要使用 CPU。例如,第二名 Oracle 3000 多万 tpmC 的测试中,数据库使用了 108 颗 T3 SPARC 处理器,共有 1728 个物理核心和 13824 个执行线程,同时存储设备使用的是 Intel 服务器作为机头,总共使用了 97 台服务器,194 颗 Intel X5670 CPU,2328 个物理核心。

2、TPC-C 基准测试无法简单地通过增加 CPU 核来提升性能。这是因为,TPC-C 考察分布式事务,数据库软件如果做得不好,无论怎么增加 CPU 也无法提升 TPC-C 性能。Oracle 因为其 RAC 技术可以把 OLTP 数据库服务器扩展到几十个节点,其它软硬件厂商凭借单机无法超越,直到 OceanBase 实现了真正的 OLTP 分布式数据库技术。

从结果来看,OceanBase 提交时间是 2019 年 10 月 2 日,其他几家提交时间是 2011 年、2010 年... 为何大家提交时间如此不同?不同时间提交的结果,具有可比性吗?

TPC-C 测试是需要有驱动力的,Oracle 2010 年测试得到 3000 多万的结果之后就“独孤求败”了,其它厂商测不过,Oracle 也缺乏刷新自己保持的记录的动机。Oracle 最新的测试结果是 2013 年 3 月份做的,在榜单的第四名,当时也是为了推广 Sun 的 SPARC 处理器。大家关注的往往都是榜单的前几名,Oracle、DB2 和 SQL Server 这三家公司把 TPC-C 性能测得太高了,导致其他厂商基本没有机会进入 TPC-C 榜单前几名,与其测出普通的结果,还不如干脆保持“神秘”,OceanBase 也是准备了九年确保能够上榜之后才正式测试。

OceanBase 和榜单前几名的测试时间相差比较大,本质的原因在于其它数据库采用的是专用硬件(专用服务器 + 专用高端存储),OceanBase 采用的是基于普通 PC 服务器的分布式架构。采用分布式架构之后,OceanBase 的硬件成本大幅优于专用硬件,这几年硬件性价比提升的主要受益者也是普通 PC 服务器。所以,这里更多是专用硬件和分布式架构的区别,而不在于测试时间的差别。当然,基础软件重大创新的时间周期是很长的,一般需要十年以上的积累,银行核心业务今天使用的大型机还是几十年前的技术。

据介绍此次测试结果是在阿里云支持下实现的,这意味着什么?硬件产品与测试结果之间的关系是什么?

TPC-C 测试需要考察三年软硬件总费用,如果采用独立部署的模式,需要购买全部硬件,例如第二名 Oracle 测试的硬件总体成本大约 3000 多万美金,绝大多数商业公司都是玩不起的。而 OceanBase 采用阿里巴巴公有云提供的 ECS 云服务器,测试多长时间就租用多长时间,使得测试成本大幅降低。

TPC-C 测试要求在峰值性能稳定运行 8 个小时,其中至少 2 小时性能抖动不超过 2%,OceanBase 做到了 8 小时性能抖动不超过 2%,无论对数据库软件还是硬件挑战都非常大。OceanBase 在阿里云支持下完成此次 TPC-C 测试,总共使用了 204 台 ECS i2 云服务器。另外,TPC-C 模拟的是银行的交易核心,对稳定性和宕机恢复都有严格的要求,说明 OceanBase 能够在阿里云上提供金融级的可靠性。

有人说 OceanBase 取得的测试结果是被“双十一”这样的业务倒逼的,我们应该如何理解业务倒逼技术?

OceanBase 从 2010 年开始立项就定位要做世界级的分布式数据库,然而,好的技术一定要先有好的业务场景。对于数据库这样的基础软件,想要弯道超车,更是需要重量级的业务场景。每年“双十一”零点的峰值压力对于高性能数据库是绝佳的练兵场,OceanBase 也是在阿里内部经过了多年的“双十一”历练之后才开放给金融以及其它行业的客户。

对于数据库这样的通用技术来说,既要业务需求倒逼但同时又要超出业务需求。数据库的整体设计一定是面向通用场景,遵守数据库行业国际标准,例如针对数据库语法的 SQL 规范,以及针对数据库性能的 TPC-C 测试规范;同时,数据库的功能集合很大,需要根据业务需求合理安排研发优先级,研发团队成员才能从解决实际业务问题中找到成就感。

我们如何看待国内厂商积极参与 TPC 测试?

TPC 是数据库行业针对性能测试的国际权威标准,国内厂商积极参与 TPC 测试,本身也是中国数据库行业自信的一种体现,表明中国数据库可以逐步参与全球竞争。中国的数据库需要回归研发本质,具备自主研发和自主创新能力。对于 TPC-C 测试,我也看到部分国内厂商采用未经官方认证的标准,我认为这是不合适的。OceanBase 后续会将 TPC-C 测试工具开源,使其它数据库厂商也能够简单地完成符合审计标准的 TPC-C 测试,进一步促进中国数据库产业和国际接轨。

OceanBase 在兼容 Oracle 方面,目前的主要进展是什么?接下来的发展计划是什么?

本次 TPC-C 测试采用的是 OceanBase 2.2 版本,OceanBase 2.2 已经初步具备 Oracle 兼容能力,OceanBase TPC-C 测试采用的就是完全兼容 Oracle 的存储过程语法。阿里巴巴内部有部分 Oracle 业务已经平滑迁移到 OceanBase,阿里巴巴外部也有股份制银行正在将 Oracle 业务平滑迁移到 OceanBase。接下来,OceanBase 还会进一步加强 Oracle 兼容特性,重点加强分布式优化器和执行器的核心能力。

作者介绍

杨传辉(日照),蚂蚁金服研究员,OceanBase 主架构师,负责 OceanBase 研发,职业生涯先后在百度和阿里从事云计算和分布式数据库内核研发工作,著有《大规模分布式存储系统:原理与实践》。

OceanBase 大事记

2010 年:创始人阳振坤加入阿里巴巴,OceanBase 正式立项;

2011 年:OceanBase 0.1 版本发布,应用于淘宝收藏夹;

2014 年:OceanBase 0.5 版本发布,替代 Oracle 在支付宝交易系统上线,负担“双十一”10% 流量;

2015 年:网商银行成立,OceanBase 成为全球首个应用在金融核心业务系统的分布式关系数据库;

2016 年:OceanBase 1.0 版本在支付宝账务系统上线,支撑 12 万笔 / 秒支付峰值;

2017 年:支付宝首次把账务库在内的所有核心数据链路搬到 OceanBase 上,创造 4200 万次 / 秒数据库处理峰值纪录。同年,OceanBase 1.x 版本在多家商业银行上线;

2018 年:OceanBase 2.0 版本正式发布,降低金融业务向分布式架构转型的技术风险;

2019 年:OceanBase 获得 TPC-C 基准测试排名榜首。

相关文章
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
341 0
|
2月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
4月前
|
Oracle 关系型数据库 MySQL
OceanBase 与传统数据库的对比
【8月更文第31天】随着云计算和大数据技术的发展,分布式数据库因其高扩展性、高可用性和高性能而逐渐成为企业和开发者关注的焦点。在众多分布式数据库解决方案中,OceanBase作为一个由阿里巴巴集团自主研发的分布式数据库系统,以其独特的架构设计和卓越的性能表现脱颖而出。本文将深入探讨OceanBase与其他常见关系型数据库管理系统(如MySQL、Oracle)之间的关键差异,并通过具体的代码示例来展示这些差异。
303 1
|
4月前
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
1110 2
|
20天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
22天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
36 4
|
2月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
66 3
Mysql(4)—数据库索引
|
28天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
160 1
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
88 2
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
122 4