登顶TPC-C|云原生数据库PolarDB技术揭秘:弹性并行查询(ePQ)篇

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 「PolarDB登顶TPC-C技术揭秘」系列硬核文章

导读

日前,阿里云PolarDB云原生数据库以超越原记录2.5倍的性能一举登顶TPC-C基准测试排行榜,以每分钟20.55亿笔交易(tpmC)和单位成本0.8元人民币(price/tpmC)的成绩刷新TPC-C性能和性价比双榜的世界纪录


每一个看似简单的数字背后,都蕴含着无数技术人对数据库性能、性价比和稳定性的极致追求,PolarDB的创新步伐从未止步。「阿里云瑶池数据库」公众号特此推出「PolarDB登顶TPC-C技术揭秘」系列硬核文章,为你讲述“双榜第一”背后的故事,敬请关注!


本文为系列连载第5篇——弹性并行查询(ePQ)篇


👉 点击查看本系列往期内容


1. 概述

image.png

TPC-C是由国际数据库事务性能委员会TPC组织发布、专门针对OLTP系统的测试模型,涵盖了数据库的增删改查等典型处理路径,以此来测试数据库的OLTP性能,最终性能以tpmC(每分钟订单创建数目)来衡量,TPC-C测试模型能够直观地评估出一个数据库的性能表现。


本次TPC-C基准测试,我们所使用的是PolarDB for MySQL 8.0.2版PolarDB采用云原生架构,通过软硬件高效结合,实现了性能、可扩展性和性价比的全面提升。其创新的云原生架构突破了单集群的扩展性瓶颈,支持数千节点的横向扩展,单集群可管理100PB级数据。除了写入性能的突破,查询也具备了接近线性扩展的能力,其中查询场景分为:


  • 查询数据仅涉及单个节点,比如TPC-C中交易类查询,这类查询直接路由至对应节点完成计算。
  • 查询数据涉及多个或所有节点,比如TPC-C审计中的部分查询,这类查询由ePQ并行计算引擎完成分布式查询。


PolarDB弹性并行查询(Elastic Parallel Query,简称ePQ)是PolarDB MySQL发布的企业级查询加速功能,同时支持单机并行和多机并行两种模式,单机并行是利用节点内的计算资源并行加速查询,多机并行是利用集群内任意节点的空闲资源进行并行加速,具备分布式执行能力。从用户视角看,PolarDB ePQ以集群地址(Endpoint)的方式对外提供服务,不同节点分组构成集群分组,不同场景的业务可选择配置不同的分组,各自配置合适的并行策略,以实现业务隔离。如下图示ePQ的部署架构图:

image.png

PolarDB ePQ部署架构


ePQ并行计算引擎为PolarDB提供了具备极致扩展能力的分布式执行框架,在一写多读形态中,由于是共享存储,任意节点均可以访问到全部数据,ePQ并行计算的子任务可以被调度到任意节点运行,调度器主要考虑因素为资源负载。但在PolarDB多主分区表形态中,每个物理分区的访问由对应节点负责,ePQ并行计算引擎同样可以感知数据的分布属性,基于代价生成最优的分布式执行计划。

2. PolarDB ePQ技术架构

2.1 整体架构

PolarDB ePQ的目标是打通集群计算层的计算资源,基本原理是将一个复杂查询任务拆分为多个子任务,子任务可以被派发到同集群内的任意节点执行计算,有效利用集群内其它节点空闲计算资源(CPU、 内存等)来加速查询。PolarDB ePQ功能属于内核特性,任意节点都可以提供完整的服务,如下图是从内核视角看到的弹性并行查询的架构图:

image.png

PolarDB ePQ架构图

  • 并行优化器(PQ Optimizer),在串行计划的基础上做信息提取,然后基于代价的枚举拆分出最优的子计划切片(Plan Slices)。
  • 全局资源视图(Global Resource View),维护集群内所有节点的实时负载信息,方便协调器快速找出有空闲计算资源的节点。
  • 任务协调器(Coordinator),根据实时资源负载情况,从任务队列中调度执行。
  • 弹性并行执行器(Parallel Execution Engine),负责将被调度的子计划切片(Plan slices)生成对应的Physical Plan,然后交给Executor模块执行。如果是远程节点执行,还需要将Phsical Plan序列化,通过内部网络通道传输到远程节点上执行。
  • 资源管理器(Resource Manger),提供限制并行查询使用资源上限的能力,比如当CPU使用率超过了70%就不再选择并行执行。
  • 基于共享存储的跨机并行架构,可以保证查询结果的实时性,并在跨节点一致性视图机制的保证下,子任务在任意节点执行都能读取到正确的数据。

2.2 并行优化器

并行优化器(PQ Optimizer) ,在串行计划的基础上做信息提取,然后基于代价的枚举拆分出最优的子计划切片(Plan Slices)。


并行优化是一个自底向上,基于动态规划的穷尽式枚举过程,在过程中会针对每个算子,枚举可能的并行执行方式和数据分发方式,并基于输出数据的Physical Property(distribution + order)构建物理等价类,从而做局部剪枝,获取局部子问题的最优解并向上层传递,最终到root operator获取全局最优解。


以下是针对t1 NLJ t2这个算子,做枚举过程的一个简要示例:

image.png

在整体枚举完成后,计划空间中会产生一系列带有数据分发Exchange Enforcer的物理算子树,基于代价选择最优树即可,然后以Enforcer作为子计划的切分点,可以构建出一系列的执行计划抽象描述,输出到plan generator中。

2.3 分布式执行引擎

执行引擎主要负责任务的派发、执行、和状态管理。 接受客户查询的线程称为leader线程,它负责将并行查询任务派发到各个节点上,每个远程节点还会有一个migrantleader线程,远程节点的workers任务由各自的migrant leader来管理,leader负责管理migrant leader和本地的workers,这样一个两级分组式管理的模式,好处是最大限度的减少了远程信令控制通道的传输内容和频次。 

image.png

引擎中的通信通道有2种,一个是负责任务派发和worker状态收集的信令控制通道,它是一个双向的异步消息通道。另一个数据通道只负责传输worker的结果数据,是一个单向的传输通道,虽然传输方向是单向的,但需要支持多种数据shuffle方式,比如repartition/broadcast等,而且需要同时支持本地和远程跨机两种模式。


引擎的数据驱动模型采用的是Pull模式,这样可以灵活嵌入到MySQL的火山执行引擎中,另外pull模式的优势是数据实时性高,能做到极致的流水线处理。

2.4 自适应调度

因为是共享存储架构,理论上可以将并行任务调度到任意节点执行,但并行查询的目标是利用空闲计算资源进行加速,并且不能对客户线上业务造成负面影响。


全局资源视图模块主要负责维护实时的节点负载信息,每个节点负责采集自己的工作负载信息,比如CPU/IO、Memory等,然后将负载信息用UDP协议广播给其它所有节点,两两互相广播后,所有节点都维护了一份各个节点的资源视图列表。


Adaptive available factor机制避免资源争抢,原理是为每个节点设置一个可用比率factor,假设发现一个节点剩余可用资源为100,初始factor是个保守值,比如是20%, 那最多只使用这个节点空闲资源的20%,当检测到连续n秒资源使用率依然没有超过阈值,则逐渐提升factor比率。当一旦发现该节点资源超过预期,则将factor快速下调,这样一个慢启动快回调的自适应调整机制,来实现一个尽量的动态平衡。

image.png

基于负载的自适应调度

Workers分配原则,在已知的资源列表中,如何分配并行查询中的多组workers:


1、最小跨机传输原则,因为worker和worker之间数数据交互,尽量减少跨机的数据传输。

image.png

2、同节点内的workers尽量访问连续的数据分片,连续的数据分片可以获得更好的cache亲和性,性能更优。

image.png

3. TPC-C加速场景

3.1 并行JOIN优化

基于ePQ执行引擎各种组件的完备性,可以支持丰富的JOIN并行方式

  • Parallel NestLoop JOIN
  • Parallel Hash JOIN
  • Parallel Partition-wise JOIN


因采用多主分区表形态,在TPC-C Consistency审计的查询SQL中,Parallel Partition-wise JOIN发挥了重要作用,当查询join列是分区键时,无需数据shuffle,在本地节点完成JOIN。不仅支持了Partition-wise Hash Join,也支持了Partition-wise Nest loop Join,比如:

image.png

TPC-C Consistency 1中查询SQL

3.2 Partition-wise Materialize优化

当查询语句中有派生表且要参数JOIN时,一般的做法是先并行物化,然后再将物化表作为广播表广播到其它节点参与JOIN,当物化表结果集比较大,需要广播给上千个节点,性能损耗非常大,而且在shuffle过程中还有单点瓶颈问题,TPC-C Consistency审计中就有多个这类场景,比如consistency2中查询:

select t1.d_w_id, t1.d_id, t1.max_o_id1, t2.max_o_id2, t3.max_o_id3
from
    (select d_w_id, d_id, d_next_o_id - 1as max_o_id1
from bmsql_district) t1,
    (select o_w_id, o_d_id, max(o_id) as max_o_id2
from bmsql_oorder
groupby o_w_id, o_d_id) t2,
    (select no_w_id, no_d_id, max(no_o_id) as max_o_id3
from bmsql_new_order
groupby no_w_id, no_d_id) t3
where t1.d_w_id = t2.o_w_id
and t1.d_w_id = t3.no_w_id
and t1.d_id = t2.o_d_id
and t1.d_id = t3.no_d_id
and (t1.max_o_id1 != t2.max_o_id2 or t1.max_o_id1 != t3.max_o_id3 or t2.max_o_id2 != t3.max_o_id3);

t2和t3两个物化表内部有group by算子,不支持展开,只能先进行物化再进行JOIN,为提升此类查询性能,ePQ支持了Partition-wise Materialize,将物化下推到各个节点分开物化,不仅避免了数据跨机shuffle的开销,也避免了gather到leader节点再广播的单点瓶颈问题,做到了更充分的并行。

image.png

TPC-C Consistency 2查询使用Partition-wise Materialize

4. TPC-H加速效果

TPC-C测试考察的是交易类业务场景,ePQ作为并行执行框架,线上业务主要应用于轻分析类查询加速,查询加速比是评估并行查询性能非常重要的指标,在相同的计算资源情况下,并行对比原串行的加速比,如下是TPC-H 100G数据量的加速比测试。

image.png

测试实例规格为16c128G主从2节点,开启ePQ,TPC-H中22条SQL均可以并行加速平均加速比为22.5倍。因为ePQ支持分布式多机并行,水平扩容节点还可以继续线性加速,下面测试了更大数据量(TPC-H 1T)在水平扩容场景下的线性加速能力。

image.png

其中22条SQL全部支持多机并行,17条可以继续线性加速。

5. 总结

从用户视角看,云原生数据库最核心的价值是提供低运维成本的可弹性扩展的数据库服务,让用户可以更多专注自身业务上,关键是随着用户数据体量日益增长,依旧能提供稳定可预期的查询性能,让用户业务可持续稳定的获取关键数据insight,最大化提升业务价值。如果随着用户数据增长,报表分析类查询性能逐渐衰退,即便是扩容资源也无法改善是用户无法接受的,支持并行查询,提供可弹性扩展的线性加速能力是云原生数据必须具备的能力。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4月前
|
人工智能 Cloud Native 安全
云原生+AI 为企业出海提供全新技术引擎!明天见
5月22日 14:00「飞天发布时刻」,阿里云云原生应用平台产品负责人李国强将重磅揭晓面向 AI 场景的云原生产品体系升级,通过弹性智能的全球一体化架构、开箱即用的云原生 AI 工程化能力,为中国企业出海提供全新技术引擎。
|
4月前
|
存储 缓存 分布式计算
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解读。 作者:杨关锁,北京镜舟科技研发工程师
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
|
3月前
|
存储 人工智能 关系型数据库
诚邀您参加《智启云存:AI时代数据库RDS存储新突破》线上闭门技术沙龙!
诚邀您参加6月11日(周三)14:00在线上举行的《智启云存:AI时代数据库RDS存储新突破》闭门活动。免费报名并有机会获得精美礼品,快来报名吧:https://hd.aliyun.com/form/6162
|
4月前
|
人工智能 关系型数据库 分布式数据库
媒体声音|从亚太到欧美,阿里云瑶池数据库凭何成为中企出海的技术底气?
在中企出海的时代浪潮中,瑶池数据库正凭借其技术创新、场景化解决方案、智能化能力、全球化布局,成为企业跨越挑战、构建全球竞争力的关键伙伴;同时也以硬核的技术实力证明了中国数据库的国际竞争力。
|
4月前
|
安全 Apache 数据库
【倒计时3天】NineData x Apache Doris x 阿里云联合举办数据库技术Meetup,5月24日深圳见!
5月24日,NineData联合Apache Doris与阿里云在深圳举办数据库技术Meetup。活动聚焦「数据实时分析」与「数据同步迁移」两大领域,邀请行业专家分享技术趋势、产品实践及解决方案,助力企业构建高效安全的数据管理体系。时间:14:00-17:30;地点:深圳新一代产业园2栋20楼会议室。线下名额有限(80人),速报名参与深度交流!
102 1
|
2月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
4月前
|
关系型数据库 数据库 RDS
【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】(5.30-6.8)
本周精选聚焦数据库迁移训练营、快速连接云数据库RDS训练营及智能多模态搜索解决方案。为用户提供模拟教程与实战演练,学习RDS MySQL实例连接与数据管理技能,助力企业智能化发展。每周解锁数据库实战新场景,抓紧时间,精彩不容错过!
|
3月前
|
关系型数据库 分布式数据库 数据库
再获殊荣,阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
内存池化技术新突破,阿里云PolarDB蝉联SIGMOD最佳论文奖
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展

相关产品

  • 云原生数据库 PolarDB