
阿里云智能数据库产品事业部PolarDB产品部嘉宾:冯遵宝(北侠) 背景:PolarDB-PG计算存储分离 PolarDB-PG计算存储分离 架构特点 •扩展性:存储计算分离,按需扩缩容•成本:多个计算节点共享一份数据,降低存储成本•易用性:一写多读/透明读写分离,单机体验、•可靠性:三副本、秒级备份•可用性:毫秒级主备延迟,秒级恢复 PolarDB-PG计算存储分离 计算存储分离:模块栈 •事务层:CSN快照•日志层:复制WALMeta、Lazy回放,并行回放,LogIndex•缓存层:常驻BufferPool、多版本页面•存储层:DirectIO、数据预读、预扩展、PolarVFS HTAP业务场景的传统解决方案 业务背景:TP业务中大量表join(报表/对账) PolarDB-PGHTAP架构(in-house) PolarDB-PG内核原生支持MPP引擎:无需导数据 提高计算节点利用率 •发挥所有RO节点的计算资源 毫秒级数据新鲜度(物理流复制)•TP/AP共享一份数据,两套计算引擎,减少存储和运维成本 TP/AP物理隔离(避免CPU/MEM互相影响) •单机执行:部分节点,处理高并发的TP查询•分布式MPP执行:部分节点,复杂AP查询 弹性扩展 •任何节点均可做为MPP的master节点•集群计算能力随时扩展,即时生效,数据无需重分布 PolarDB-PG - HTAP内核模块栈 打造分布式执行引擎 •分布式执行器•事务一致性•分布式优化器•SQL全兼容 PolarDB-PG - HTAP分布式优化器 PolarDB优化器特点 •单机优化器:动态规划•分布式GPORCA优化器:TopDown模型 实现方案 •基于ORCA扩展•与共享存储特性相结合 PolarDB-PG-HTAP分布式优化器 场景:LeftOuterJoin•A⋈B=(A1⋈B)⋃(A2⋈B)•右侧需要有全量属性 传统LeftOuterJoin的计划• 右表广播•Prefetchinner•Seqscan•Material 1.没有复用TP型索引2.物化算子导致流水中断 •右侧:扫描共享存储的索引•左侧:并行化分片索引扫描 PolarDB-PG-HTAP分布式执行器 控制链路 数据链路 •SyncRuntimeEnv•ExecuteSubTree•ShuffleSend&Receive•ParallelScan PolarDB-PG-HTAP动态扫描 •数据倾斜 •数据倾斜:Heap表引用TOAST表•计算倾斜:长事务、Buffer/网络/IO抖动 •方案 •能者多劳:算子动态请求扫描任务 •效果(时空数据库场景) •动态扫描能线性提升,消除数据倾斜 PolarDB-PG - HTAP弹性扩展 •关键点 •Coordinator全链路⽆状态•Worker全链路⽆状态 •效果 •消除Coordinator单点•算⼒SQL级别弹性扩展 PolarDB-PG - HTAP数据一致性 •计算节点内存不⼀致•元数据不⼀致•MVCC冲突 •数据版本不⼀致 •会话⼀致性•Tx1:读取V2•Tx2:读取V1 PolarDB-PG - HTAP数据一致性 •整体方案(提供会话一致性)•等待回放:保证RealLSN单调递增•Global Snapshot:最小Snapshot •选取最小的Snapshot• precedes(Snapshot s1, Snaphosts2):s1.xmin < s2.xmins1.xmax < s2.xmax比较s1.xip和s2.xips1.xip长度<s2.xip长度snapshot = xmin, xmax, xip[]•如何比较: PolarDB-PG-HTAP应用 单机并行: •最多使用6个CPUCore,受限于单机•存储集群多盘的大IO带宽没有利用起来 PolarDB-PG - HTAP应用 开启跨机并行计算:• alter system set polar_enable_px=1;•sql hint 利用共享存储特性的计划: PolarDB-PG - HTAP应用 继续增加计算资源: •30个CPU Core和内存,可继续秒级弹性扩展更多计算节点•充分发挥存储集群多盘的大IO带宽能力 PolarDB-PG-HTAP应用-并行创建索引 •业务背景•导数据之后会建大量索引 •方案 •多机加速排序•全流水+batch写 •效果 •建索引性能提升4~5倍 PolarDB-PG-HTAP应用-批量导数据/物化视图刷新 •业务背景 •CREATETABLEAS•SELECTINTO•REFRESHMATERIALIZEDVIEW •Select子句使用MPP加速 •多机并行读取•并行执行业务逻辑 •效果•2个节点提升2倍 PolarDB-PG - HTAP应用-多模(时空数据库、时序、向量计算) •背景 •计算密集型•RTree索引粗过滤 •分布式执行 •NestLoopIndexJoin•感知共享存储的ShareIndexScan •效果(时空业务)• 数据量:40000w,500GB •规则:5RO,16c,128G PolarDB-PG-HTAPTPCH性能加速比 测试环境:1TBTPCH1RW+15个RO,16C/128G,400MB/s带宽 1.分布式并行/单机并行的加速比• 3个SQL加速比60x•19个SQL加速比15x PolarDB-PG - HTAP TPCH性能 •性能相同 PolarDB-PG -开源社区 内核 PolarDB-PG开源特⾊ •兼容:100%兼容社区PostgreSQL•全开源:所有组件•稳定:和生产环境代码共用一份代码 PolarDB-PG-开源社区 PolarDB-PG提供丰富的文档和视频资料• 整体架构文档•核心功能文档•快速入门文档•定期直播讲解PolarDB-PG内核原理 PolarDB-PG -开源社区 丰富的部署方式 •docker•编译安装•单机•分布式(云盘/共享存储) 欢迎交流~ zunbao.fengzb@alibaba-inc.com