带你读《阿里云产品六月刊》——十五、小鹏汽车使用PolarDB实现百亿级表高频更新和实时分析

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 小鹏汽车使用PolarDB实现百亿级表高频更新和实时分析

客户推荐语录

 

阿里云瑶池旗下的云原生数据库PolarDB PostgreSQL版的存储具备弹性扩容能力,最大可支持100TB存储空间。它的大表优化和弹性跨机并行查询(ePQ),成功解决了社区PostgreSQL针对大表的查询和并发更新慢的问题。在小鹏汽车的智能辅助驾驶业务上,实现了每日TB级大数据表的7000万行更新和大数据表秒级分析查询。

 

——小鹏汽车智能辅助驾驶SRE负责人

 

1. 客户介绍

1.1 关于小鹏汽车

小鹏汽车是中国领先的智能电动汽车公司,致力于为对技术充满热情的消费者设计、开发、制造和营销智能电动汽车。公司的核心使命是通过科技驱动智能电动汽车的变革,引领未来的出行方式。为了提升客户的驾驶体验,小鹏汽车投入了大量资源自主研发全栈式智能辅助驾驶技术、车载智能操作系统,以及涵盖动力总成和电子电气架构的车辆核心系统。

 

image.png

 

1.2 业务场景

智能辅助驾驶是小鹏汽车的重点技术方向,每天有海量的图片、视频数据采集上传。有海量的数据存储在对象存储中,同时还需要在关系数据库中针对每个文件生成一条“目录”,以便批量地查找和管理文件,记录文件的位置、属性、指标等。这就导致了这个“目录”要覆盖到全量的数据文件,即数据库的超大单表,并且随着指标的变化要经常进行表的全量数据更新。

 

2. 遭遇瓶颈——海量数据的考验

小鹏汽车原先使用的数据库是社区PostgreSQL,随着智能辅助驾驶业务的快速增长,系统面临数据处理的三重挑战:

2.1 大表查询慢

面对海量数据,单机并行处理能力已经达到极限,无法应对TB级大表的查询,小鹏汽车的智能辅助驾驶分析业务承受前所未有的压力。小鹏汽车数据中心最庞大的数据表体量已攀升至7 TB,而超过TB级别的数据表数量更是多达四张。当大表的分析查询时间达到数十分钟甚至数小时时,这一数据处理瓶颈已成为制约智能辅助驾驶业务的关键难题,迫切需要一种新的技术解决方案来破解。

2.2 大表频繁更新

在小鹏汽车的标注业务中,面临着一个日益严峻的问题:TB级大数据表每天的更新量高达7000万行。这一庞大的数据流量引发了一系列的问题,尤其是在TB级大表更新过程中,过多的文件校验作业导致了文件系统的IOPS达到极限,进而导致了系统性能的急剧下降。最终,这种过载使得单行数据更新耗时达到分钟级,进而触发数据库雪崩,对公司的业务运营构成了直接的威胁。

2.3 存储空间快速增长

数据库总容量飙升至30 TB并且以每月2 TB的惊人速度持续增长。社区版的PostgreSQL数据库面临着一个严峻挑战:它无法实现自动化的扩容。这样迅猛增加的存储需求正急剧逼近系统的极限,成为了一个亟待解决的难题。

3. 突破僵局——PolarDB的方案

随着数据量越来越大,社区版PostgreSQL遇到性能瓶颈,数据处理链路产生堆积,尤其是数据批量更新更是成为卡点,影响智能辅助驾驶研发效率。针对现状和PostgreSQL生态兼容性考虑推荐客户测试云原生数据库PolarDB PostgreSQL版(PolarDB PostgreSQL版,简称为 PolarDB-PG),在兼容现有业务代码的同时,解决单机数据库的性能瓶颈,提高研发效率:

 

image.png

3.1 ePQ加速TB级大表分析查询

ePQ是Elastic Parallel Query(弹性并行查询)的缩写。PolarDB-PG通过ePQ优化器,生成能够被多个计算节点并行执行的执行计划。ePQ的执行引擎将在多个计算节点上协调执行该计划,同时利用多个节点的CPU、内存、I/O带宽来扫描和计算数据。PolarDB-PG ePQ的架构示意图如下所示:

 

image.png

 

基于此架构,PolarDB-PG的ePQ相较于社区PostgreSQL有如下优势:

 

极致的分析查询性能:1TB TPC-H测试平均提升23倍性能,性能可随并行度、节点数线性提升。

业务完全透明:无须修改任何业务代码,仅需在控制台打开polar_enable_px开关即可使用ePQ

一体化存储:TP/AP共享一套存储数据,减少存储成本。TP高压力写入下,AP引擎提供毫秒级数据新鲜度。

3.2 大表优化解决大表频繁更新问题

 

image.png

 

▶︎ 客户业务问题

在小鹏汽车的场景下,单表的大小达到TB级别,最大可达到7 TB。业务侧采用短连接 + 高并发(> 400)更新的方式来访问TB级大表。在这种情况下,大表的文件访问操作(例如 open/lseek)会将整个数据库的IOPS打满,IO时延飙升,触发数据库雪崩。

 

▶︎ 原因分析 ️

在社区PostgreSQL中,每张表的文件都是以Segment为单位来进行存储,每个Segment大小为1GB。在如下三个场景需要使用open/lseek文件访问操作来获取文件大小:

 

刷脏操作:在脏页写入情况下,需要定位每一个脏页需要写入的具体位置。这个时候,需要打开写入页面前所有的segment文件,通过lseek获取所有segment文件大小并求和,最终,check脏页写入位置正确。

DML引发的表扩展:在Insert/Update过程中,如果找不到空闲页面,会进行表扩展。表扩展的时候需要获取当前表的大小用来定位表扩展后的位置,获取当前表大小需要逐个open/lseek segment文件。

优化器进行代价估计:优化器在对普通表进行代价估计的时候,需要获取表大小用来判断采用seqscan还是indexscan。获取当前表大小需要逐个open/lseek segment文件。

 

小鹏汽车智能辅助驾驶场景下, 7 TB的大表意味着7000个Segment文件,每次对大表进行刷脏或者表扩展的时候,单次文件写入操作会被放大成7000个Segment文件长度校验。同时业务侧还是采用短连接 + 高并发的方式访问大表,意味着文件句柄无法缓存,只能采用文件操作(open/lseek)来访问Segment文件长度,最终大表的海量文件访问将整个数据库的IOPS打满,IO时延飙升,触发数据库雪崩。

 

▶︎ 解决办法

PolarDB-PG用如下三个方法解决了大表写入问题:

 

二分查找获取表大小:在文件扩展或者优化器代价估计。社区PostgreSQL获取表文件大小,需要逐个获取每个segment大小,复杂度为 O(N);PolarDB-PG优化过后,按2的倍数依次打开segment文件(例如 0、1、2、4、16、32....),直至文件不存在,锁定文件大小区间,例如[64,128)。然后在 [64,128)二分查找segment N存在并且 N+1 不存在,最终文件的大小锁定为(N-1)*segment_size + 第 N 个 segment大小(segment_size为1GB)。经过优化后,表文件大小获取的复杂度由 O(N) 降低至 O(logN)。

减少冗余文件校验:社区PostgreSQL在刷脏写入一个页面的时候,需要逐个打开之前所有Segment文件计算页面写入位置信息,检查页面写入位置信息正确。PolarDB-PG优化过后,在保证数据正确性的基础上,减少冗余的文件校验,仅获取 SegN-1和SegN两个文件大小。

表大小缓存(Relation Size Cache):PolarDB-PG设计的表大小缓存,会在优化器进行代价估计的时候优先采用缓存,而不是通过IO获取文件大小。

3.3 存算分离实现弹性扩容

image.png

 

▶︎ 客户业务问题

小鹏汽车的PolarDB-PG实例数据量达到30 TB,并且以平均每月2 TB的速度在增长。基于ECS自建的PostgreSQL数据库已无法应对数据增长的需要。

 

▶︎ 解决办法

PolarDB-PG基于存储计算分离的架构,PolarStore存储集群可独立扩展,支持弹性扩容,存储按量进行计费,最大支持100 TB存储,PolarStore存储集群的读写带宽稳定在1.6 GB/s以上。大容量 + 高带宽确保PolarDB-PG的 IO 和存储空间不成为瓶颈。

 

4. 迎接转机——系统性能的蝶变

4.1 大表分析查询速度提升3.6倍

以数据统计业务为例,大表(这里简称为 xxx)的表大小为7.6TB,通过如下语句查询:

select count(1) as cnt from xxx where create_time>='2024-03-19 01:00:00' and create_time<'2024-03-19 02:00:00';


 

未使用ePQ查询,采用原生单机并行查询,并行度为6,执行时间为66秒。

 

image.png

 

采用ePQ 2个RO节点,24并发查询,执行时间可降低至18秒。

 

image.png

 

采用ePQ跨机并行查询相较于单机并行查询速度可提升3.6倍,能达到查询性能随并行度线性提升。再增加只读节点,查询速度仍可继续提升。

 

4.2 数据等待事件降低至几乎为0

下图展示了文件系统seek和open iops的变化,红线左侧是优化前的表现,红线右侧是优化后的表现。

 

优化前:整体的open/seek iops达到30000 ~ 40000。

优化后:整体的open/seek iops达到5000 左右,减少80%的iops数量。

image.png

 

如下图所示,图中的每一项表示数据库在运行过程中的等待事件总量。由原来平均 600+的FileOpen/FileSeek等待事件,优化到后面几乎没有FileOpen/FileSeek等待事件( < 1)。

 

优化前:

image.png

 

优化后:

  image.png

 

4.3 存算分离实现弹性扩容

下图展示了小鹏客户的总数据量和7天内数据增长量。总数据量达到37 TB级别,数据增长量峰值达到每7天1.5 TB,平均以每月2 TB的速度增长。但PolarDB-PG的存储空间不成为瓶颈。

 

image.png

 

下图展示了小鹏汽车智能辅助驾驶业务在业务高峰期的IO读写带宽,稳定在1.6 GB/s 以上。PolarDB-PG的高读写带宽确保智能辅助驾驶业务在高峰期正常运行。

 

image.png

5. 总结

PolarDB-PG的自动弹性扩容、大表优化和弹性跨机并行查询已经成为小鹏汽车智能辅助驾驶业务应对TB级别大表标注、分析查询的"利器"。同时,PolarDB-PG针对大表的高性能解决方案也可以更好地满足类似汽车领域内智能辅助驾驶业务的数据库访问需求:

 

1) 支持TB级别大表的秒级分析查询;

2) 支持TB级别大表每日7千万的频繁标注更新;

3) 提供100 TB的存储空间、存储弹性自动扩容、按量付费方式;

4) 所有大表优化对业务完全透明,无需业务修改,省去开发和运维负担。


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
关系型数据库 分布式数据库 数据库
一库多能:阿里云PolarDB三大引擎、四种输出形态,覆盖企业数据库全场景
PolarDB是阿里云自研的新一代云原生数据库,提供极致弹性、高性能和海量存储。它包含三个版本:PolarDB-M(兼容MySQL)、PolarDB-PG(兼容PostgreSQL及Oracle语法)和PolarDB-X(分布式数据库)。支持公有云、专有云、DBStack及轻量版等多种形态,满足不同场景需求。2021年,PolarDB-PG与PolarDB-X开源,内核与商业版一致,推动国产数据库生态发展,同时兼容主流国产操作系统与芯片,获得权威安全认证。
|
3天前
|
存储 关系型数据库 分布式数据库
客户说|古茗选用阿里云PolarDB,以云端之力解锁茶饮数字化新高度
阿里云PolarDB将持续以“业务价值”为锚点,通过技术迭代与场景化解决方案,让每一笔交易更流畅,让每一份数据更智能,助力古茗实现“每天一杯喝不腻”的日常化国民茶饮愿景。
|
11天前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
24天前
|
关系型数据库 分布式数据库 数据库
再获殊荣,阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
内存池化技术新突破,阿里云PolarDB蝉联SIGMOD最佳论文奖
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
17天前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
阿里云PolarDB凭借全球首创基于CXL Switch的分布式内存池技术,在SIGMOD 2025上荣获工业赛道“最佳论文奖”,连续两年蝉联该顶会最高奖项。其创新架构PolarCXLMem打破传统RDMA技术瓶颈,性能提升2.1倍,并已落地应用于内存池化场景,推动大模型推理与多模态存储发展,展现CXL Switch在高速互联中的巨大潜力。
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
2月前
|
关系型数据库 数据库 RDS
【瑶池数据库训练营及解决方案本周精选(探索PolarDB,参与RDS迁移、连接训练营)】(5.30-6.8)
本周精选聚焦数据库迁移训练营、快速连接云数据库RDS训练营及智能多模态搜索解决方案。为用户提供模拟教程与实战演练,学习RDS MySQL实例连接与数据管理技能,助力企业智能化发展。每周解锁数据库实战新场景,抓紧时间,精彩不容错过!
|
5月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
263 2
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
258 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问