本文系华东师范大学俞融&王清帅两位同学所著。
「俞融,华东师范大学数据科学与工程学院在读硕士生。研究生期间在数据学院DBHammer组从事面向HTAP数据库系统的评测相关技术研究,致力于定义新型benchmark并开发开源工具服务于HTAP数据库公平、公正、高效评测工作。」
「王清帅,华东师范大学数据科学与工程学院在读博士生。博士生期间在华东师范大学数据学院DBHammer组致力数据库系统的相关技术研究,目前在面向OLAP应用的负载生成,分布式、HTAP等新型数据库的评测方向取得了一定进展,之后将继续探索面向新型数据库的优化和评测技术。」
今天分享的主题是 《面向HTAP数据库的基准评测工具研究进展》,总结了近年来代表性 HTAP 评测基准,旨在服务 HTAP 数据库系统评测需求。希望阅读完本文,你可以对这个话题有新的收获,有不同看法也欢迎在底部留言探讨。
随着在线实时分析需求的增长,HTAP(Hybrid Transaction and Analitical Process)数据库随之出现,其能在同一个系统内实现 OLTP 负载和 OLAP 负载的高效处理,提供了对新鲜数据的分析能力。近年来,工业界和学术界提出了多种 HTAP 数据库架构,因此如何评测各种新型的 HTAP 数据库引起了学界和业界的广泛关注。
本篇内容主要探讨面向HTAP数据库的基准评测工具,以及研究进展。OceanBase 作为从 OLTP 数据库系统扩展而来的分布式 HTAP 数据库系统,它提供了两种资源隔离方案:OLAP 负载占比低时,在主副本上执行分析任务,以获得实时的数据;OLAP 占比高时,在只读副本上执行分析任务,以实现显式物理隔离,故而 OceanBase 在隔离性和数据库性能上有机会做出比较好的权衡,即可能具有较好的 HTAP 负载支持能力。后续我们也将陆续发布 OceanBase 对 HTAP 负载的支持能力测试报告。
引言
HTAP 数据库实现的难点在于 TP/AP 的资源隔离和数据同步。因此,除了评测 TP 负载面对高并发负载的性能和 AP 负载面对复杂查询的性能外,现有的 HTAP benchmark 在评估性能的设计上更加关注以下两个问题:
混合负载生成:生成 TP 和 AP 负载,并且控制 AP 与 TP 负载之间数据访问的交叉。
负载指标:量化评测混合负载运行时的隔离性,即相互之间的干扰程度。
目前主流的 HTAP 评测基准(工具)有 CH-benCHmark(2011)[1]、HTAPBench(2017)[2]、OLxPBench(2022)[3]、HATtrick(2022)[4]。下面本文将对这 4 个工作从表模式和负载生成、测试方法、控制方法、测试指标等几个方面进行分析和总结。
一、CH-benCHmark
它于 2011 年被提出,是第一个官方提出的混合负载评测基准,基于标准 OLTP 和 OLAP 基准完成定义。
图1 CH-benCHmark的TP负载和AP负载运行模式[1]
表模式和负载:把 TPC-C 和 TPC-H 表模式进行简单缝合。事务性负载使用 TPC-C 的 5 类负载,分析性负载使用 TPC-H 的 22 个查询。但是这种方式存在 AP 的扫描和 TP 的修改在数据访问空间上的不一致,较小的访问交叉使遇到读写冲突的概率较低,不同类型负载在处理上存在的资源干扰较低。
测试方法:分别运行 TPC-C 指定比例的事务和改装后类似 TPC-H 的 22 个查询,运行模式见图 1。在测试过程中,通过指定 OLAP 流的数量、OLTP 不同事务的初始占比和客户端数量,分别测量该负载模式下的 TP 和 AP 能力。同时,为了比较两类负载之间的相互干扰情况,测试需要至少进行三组,无 TP 流纯 AP 流负载、无 AP 流纯 TP 流负载和指定数量 TP 流和 AP 流负载,通过控制变量的方式人工地对测试结果进行隔离性、干扰性的分析。
测试指标:首次采用 和 。虽然指标很客观,但不适用于数据库间的横向比较,适用于个体数据库的性能展示。
二、HTAPBench
HTAPBench[2] 在 2017 年首次提出以 TP 吞吐量为前提的评测流程。
表模式和负载:与 CH-benCHmark 所使用的保持一致。
测试方法:HTAPBench 通过指定应用可以容忍的 OLTP 目标吞吐下限范围,运行足够多的 TP 线程保证满足吞吐的初始下限,在执行过程中再根据 TP 吞吐的实时反馈来确定是否添加 OLAP 流,由此测得保证 TP 吞吐量下的最大 OLAP 能力,运行模式见图 2。这种测量方式包含了对于 TP/AP 之间相互干扰的考虑,只需要执行一次,较简便。
测试指标:HTAPBench 使用 进行单个 worker 性能之间的比较。
分布控制方法:HTAPBench 提出如何控制分析任务复杂度和查询访问模式这两个问题,主要目的是使得 AP 任务对 TP 生成数据的访问得到控制。同时提出使用密度估计的方法来确定当前数据库的数据分布,使之能够根据当前数据库状态动态确定分析查询。
图2 HTAPBench运行模式示意图[2]
三、OLxPBench
OLxPBench[3] 是中科院计算所研发的关于 HTAP 数据库基准的评测工具(工具架构见图 3),他们对 HTAP 数据库评测的任务进行分析,得出负载应当满足三个特征,即实时查询、语义一致性和面向特定领域。语义一致性需要 TP 修改的数据都被 AP 访问,实时查询包含实时查询和批查询,要能够模拟用户的行为和客户决策的需求。论文指出 CH-benCHmark 和 HTAPBench 两种基准采用的对原有基准简单缝合的方式以及 TPC-H 查询未能真实展现 TP/AP 之间的干扰是要解决的问题。
表模式和负载:OLxPBench 设计了面向通用场景(Subenchmark)、金融场景(Finbenchmark)和电信场景(Tabenchmark)的三种负载,包含对于实时查询、语义一致性的查询逻辑设计。Subenchmark 作为通用的负载,参考了 TPC-C 基准表模式的生成,使用 5 个事务 +9 个分析查询 +5 个混合事务;Fibenchmark参考 SmallBank 基准表模式的生成,使用 6 个事务 +4 个分析查询 +6 个混合事务;Tabenchmark 参考 TATP 基准表模式的生成,使用 7 个事务 +5 个分析查询 +6 个混合事务。
测试方法:与 HTAPBench 相同。
测试指标:结合了 HTAPBench 和 CH-benCHmark,使用 和 进行结果的呈现。
图3 OLxPBench架构[3]
四、HATtrick
HATtrick[4] 是威斯康辛大学在 2022 年提出的针对 HTAP 数据库的基准,它提出不同任务之间的隔离性和控制新鲜数据的访问是 HTAP 数据库实现中面临的主要挑战。
表模式和负载:HATtrick 是从 SSB 表模式中扩展而来,新增了历史记录表、新鲜度记录表以及部分字段;共有两类负载,事务型负载受 TPC-C 启发使用自建的下单事务、付款事务和订单计数事务,分析型负载使用 13 个调整后的 SSB 查询。
测试方式:给定 TP/AP 客户端数量,同时执行事务和 SSB 的 13 个查询,查询按批的形式连续不断执行,批内查询顺序随机。
测试指标:针对隔离性和新鲜度提出了两个新的评价指标。首先,提出使用吞吐边界(throughput frontier)的概念,通过二维可视化的方式进行隔离性评测如图4所示。在栅格图中,随着客户端数量变化,线越平行坐标轴隔离性越好;而在综合图中,随扩展系数变化的图像中,吞吐边界线位于比例线之上越接近边界线隔离性能越好,越接近比例线表明事务负载和分析负载之间的代价权衡越多,低于比例线越接近坐标轴表示事务负载和分析负载之间的干扰程度越高,资源竞争越激烈。其次,对新鲜度给出了度量函数(查询发起版本与第一个不可见的 TP 版本之间的时间差) 。
图4 各曲线示意图[4]
根据调研,除了早期的 CH-benCHmark,最近的三款 Benchmark 在评测时明确要求保证 OLTP 的吞吐能力。HTAP 数据库系统上 OLTP 和 OLAP 访问“同一份数据”,而事务处理能力大概率受到同步的影响(新鲜度),如何做好资源共享与资源隔离的权衡[5]是一个难点问题。正如杨传辉在《真正的 HTAP 对用户和开发者意味着什么?》所说,真正的 HTAP 数据库系统要求先有高性能的 OLTP,然后在 OLTP 产生的新鲜数据上支持实时分析 [5]。
通过对现有的典型 HTAP 数据库评测基准的分析,发现已有基准评测工具在表模式和负载生成、测试方法、分布控制方法、测试指标等方面均各有特色,旨在服务于 HTAP 特性的评测。具体来说,HTAPBench考虑了对计算代价的控制,OLxPBench 考虑了实时查询的使用,HATtrick 考虑了新鲜度指标,值得我们参考和学习。
附录:
真正的 HTAP 对用户和开发者意味着什么?
向量化引擎对HTAP的价值与技术思考
————————————————————————————————————————————
社区版官网论坛
社区版项目网站提 Issue
欢迎持续关注 OceanBase 技术社区,我们将不断输出技术干货内容,与千万技术人共同成长!!!
搜索🔍钉钉群(33254054),或扫描下方二维码,还可进入 OceanBase 技术答疑群,有任何技术问题在里面都能找到答案哦~