从TP到AP OceanBaseOLAP核心技术解析 张鑫北京奥星贝斯科技有限公司OceanBase开源架构师 DataFunSummit#2023 Contents目录 01OceanBase简介 02SQL并行执行 03高级查询优化器 04行列混合存储引擎 05资源隔离 06快速导入 技术交流:钉钉33254054 技术交流:钉钉33254054 01 OceanBase简介 OceanBase发展历程 •自主研发,完整知识产权、核心能力100%掌控•企业级能力,多年支撑蚂蚁核心业务100%负载,数百家单位客户 1.0时代: 坚定走向分布式架构 2.0时代: 原生分布式数据库 3.0时代: 混合引擎、混合部署 4.0时代: 分布式一体化架构 2010 产品立项 2013 扩大使用范围 2014 核心交易上线 2016 全业务覆盖 2017 多家金融客户 2019 打破世界纪录 2020 独立商业化 2021 规模化推广 2022 公有云走向海外 第一个用户 多个业务系统 支付宝交易金融级核心业务 核心账务核心交易支付 互联网核心系统 Oracle兼容公有云服务TPC-C6088万 HTAP引擎TPC-C7.07亿 走向通用行业、更多头部客户核心系统 TPC-H1526万 社区版发布试点海外客户 单机分布式一体化架构公有云上线 公有云北美站点开服 分布式KV存储 SQL引擎,多副本高可用 兼容性,透明扩展,多活容灾 批量处理,企业级特性,HTAP OceanBase产品功能特性 企业级SQL引擎 SQL优化 SQL执行 存储过程 可扩展的分布式架构 分布式存储 分布式事务 分布式调度 基于Paxos的容灾架构 同城三机房 两地三中心 三地五中心 MySQL兼容 Oracle兼容 •高性能:TPC-C7.07亿tpmC打破世界纪录 •高可用:RPO=0,RTO<8s •高可扩展:水平和垂直扩展,自动负载均衡,弹性扩缩容 •Oracle/MySQL兼容:业务少量修改即可迁移到OB,自动评估和迁移工具 •单机分布式一体化:高效单机和分布式,按需转换 •HTAP:同一套引擎同时支持OLTP和OLAP混合负载 •低成本:LSM-Tree,编码压缩,存储空间MySQL1/3 •原生多租户:集中管理多个业务数据,适合微服务架构和SaaS行业应用 •安全:透明加密、传输加密,安全审计,细粒度权限 •国产化:适配鲲鹏、海光等芯片 •完备产品体系:开发(ODC)、评估(OMA)、迁移 (OMS)、运维(OCP)、诊断(OAS) 公有云 企业版 社区版 OceanBase4.x整体架构 写操作读操作 弱一致性读 驱动/OBProxy SQL路由 ZONE_1 OBServer SQL ZONE_2 OBServer ZONE_3 OBServer SQL P1 P2 P1 P2 P1 P2 P0P4 P0P4 P0P4 OBServer SQL OBServer OBServer P5 P6 P5 P6 P5 P6 P7 P8 P7 P8 P7 P8 SQL SQL SQL 对等节点 •无共享集群 •OBServer包含SQL、存储、事务 高可扩展性 水平扩展 •按分区做数据分片扩展 •多Zone多活扩展 单集群规模 •TPC-C使用1557节点 单机分布式一体化 •日志流:数据库的所有变更 •多个分区可共用一个日志流 •单机内无分布式事务 •低时延分布式处理技术 基于Paxos复制的日志流 无损自动容灾 www.oceanbase.com 稳定可靠的金融级分布式数据库 •以下数据来自于实际生产系统 6100 万次/秒 >1000 台 >6 PB >3200 亿行 RPO=0,RTO<8 秒 数据库峰值处理能力集群节点数 单库存储容量 单表行数 少数副本故障时 OLTP能力试金石:TPC-C打破纪录 •TPC-C是国际最权威的OLTP评测 •严格ACID测试 •第一个通过TPC-C的分布式数据 •第一个通过TPC-C的中国数据库 •事务模型 •New-Order事务10%分布式 •性能表现 •稳态运行8小时tpmC抖动小于1% •平均23分钟完成一次快照 TPC-C打破世界纪录 OLAP小试牛刀:TPC-H30,000GB打破纪录 12345678910111213141516171819202122 2.23.2 •OceanBase3.2TPC-H整体性能提升620% •优化器 •优化时间提升10倍;新增改写规则 •直方图;统计信息管理 •全新SQL执行引擎 •Cache友好:强类型、向量化执行 •MPP&SMP并行执行框架(64节点4096并行度) •并行DML、超大事务支持 OceanBase4.0OLAP能力增强 性能提升3.4倍 •918s->270s •一阶段分布式查询优化 •自适应执行引擎 •三阶段并行下压 技术交流:钉钉33254054 02 SQL并行执行 自适应TP+AP混合负载的执行引擎 •多种执行模式 •向量化执行 •大规模并行处理 串行执行 SQL执行 并行执行 本地执行 分布式执行 并行查询 并行DML 本地数据远程数据 本地并行分布式并行 DFO0 DFO1 DFO2 并行执行调度 丰富的分布式执行策略 CREATETABLER1(aint,bint,cint)PARTITIONBYHASH(b)PARTITIONS4;CREATETABLER2(aint,bint,cint)PARTITIONBYHASH(b)PARTITIONS4; PartitionWiseJoinPartialPartitionWiseJoinHash-HashDistributionJoinBroadcastDistributionJoin R1.b=R2.bR1.b=R2.aR1.a=R2.aR1.a=R2.a HJ HJHJHJ R1R2 R1 EX(PKEY) EX(HASH)EX(HASH) R1 EX(Broadcast) R2R1R2 R2 分布式连接算法 自适应执行 createtableR1(aintprimarykey,bint,cint)partitionbyhash(a)partitions4;selectb,sum(c)fromR1groupbyb; ========================================================== |ID|OPERATOR|NAME|EST.ROWS|COST| Groupby/Distinct下压 •优化器总是下压 |0|PXCOORDINATOR||1|10| |1|EXCHANGEOUTDISTR|:EX10001|1|10| |2|HASHGROUPBY||1|9| |3|EXCHANGEINDISTR||1|9| |4|EXCHANGEOUTDISTR(HASH)|:EX10000|1|8| |5|HASHGROUPBY||1|8| |6|PXPARTITIONITERATOR||1|7| |7|TABLESCAN|r1|1|7| ========================================================== •执行时基于实际数据特征决定是否跳过下压的算子 技术交流:钉钉33254054 03 高级查询优化器 一阶段分布式查询优化 两阶段变为一阶段 •避免不优的计划 •执行计划包含分区位置信息 •秒级完成50表连接的优化 www.oceanbase.com 并行下压 下压场景 例子 v3.2 v4.0 Groupby,无distinct去重的聚合函数 selecta,sum(d)fromtgroupbya; 支持 支持 GroupBy,有distinct去重的聚合函数 selecta,sum(distinctc),count(distinctd)fromtgroupbya; 不支持 支持 Rollup selecta,sum(d)fromtgroupbyarollup(b); 不支持 支持 Distinct selectdistinctafromt; 支持 支持 WindowFunction selecta,b,sum(d)over(partitionbyc)fromt; 不支持 支持 ====================================== |ID|OPERATOR|NAME| -------------------------------------- |0|SCALARGROUPBY|| |1|PXCOORDINATOR|| |2|EXCHANGEOUTDISTR|:EX10000| |3|PXPARTITIONITERATOR|| |4|TABLESCAN|r1| ====================================== ============================================ createtableR1(aint,bint,cint,dint,primarykey(a,b))partitionbyhash(b)partitions4;selectsum(distinctc)fromR1wherea=5; |ID|OPERATOR|NAME| -------------------------------------------- |0|SCALARGROUPBY|| |1|PXCOORDINATOR|| |2|EXCHANGEOUTDISTR|:EX10001| |3|MERGEGROUPBY|| |4|EXCHANGEINDISTR|| |5|EXCHANGEOUTDISTR(HASH)|:EX10000| |6|HASHGROUPBY|| |7|PXPARTITIONITERATOR|| |8|TABLESCAN|r1| ============================================ www.oceanbase.com 技术交流:钉钉33254054 04 行列混合存储 OceanBase存储引擎 Mutation Logs MemTable(WOS) Row-levelIn-Memory Redo/MVCC GetSmall-Query ScanBig-Query RowCache BlockCache In-MemoryHash In-Memory B+-Tree MemoryDisk DumpSSTableSSTable(ROS) Multiplestorageversions 行列混合存储及编码压缩 •编码 •按列编码 MicroblockHeader Col1HeaderCol2HeaderCol3Header Col1 Col2 Row1 Row2 ...... Rown Rowindex Col3 •提升数据相似度 •规则发现 •微块自主选择 •经验推导 •解码 •无需解压,直接查询 •效果 •存储空间是MySQL/Oracle1/3 •查询缓存使用效率提升 Col1valueCol1value Col1value Col1value Col2HeaderCol3Header MicroblockHeader MEMTable 查询过滤下压 •充分利用编码优势加速查询 •LSM-Tree难点 •增量数据交叉 •谓词算子下压 •利用编码聚合信息快速过滤 •按列过滤充分利用剪枝 •向量化 •按列批量解码 •SIMD加速 Col1Header Col1 Col2 Col3 Rowindex Row1 Row2 ...... Rown ResultBitmap MinorSS