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