您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。 [-]:PolarDB-PG-HTAP详解 - 发现报告

PolarDB-PG-HTAP详解

2024-09-10 冯遵宝 - 小烨
报告封面

阿里云智能数据库产品事业部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长度