OceanBase的OLAP能力提升实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. OceanBase 的 OLAP 能力 提升实践 杨志丰(竹翁) OceanBase 首席架构师
2.
3. 目录 01 / OceanBase简介 02 / SQL并行执行 03 / 高级查询优化器 04 / 行列混合存储引擎 05 / 资源隔离 06 / 快速导入
4. OceanBase简介
5. OceanBase发展历程 • 自主研发,完整知识产权、核心能力100%掌控 • 企业级能力,多年支撑蚂蚁核心业务100%负载,数百家单位客户 2010 2016 2017 2019 2020 产品立项 支付宝账务 多家金融客户 打破世界纪录 独立商业化 规模化推广 生态大拓展 第一个用户 核心账务 互联网核心系统 公有云服务 HTAP 引擎 开源开放 公有云 TPC-C 6100万 TPC-C 7.07亿 TPC-H 30T 1526 社区用户 核心交易支付 2021 万 金融核心业务 V0.1 分布式,三副本高可用 V1.0 分布式事务,多租户 2022 V2.0 高度兼容,高性能 V3.0 HTAP混合负载 V4.0 单机分布式一体化
6. OceanBase 产品功能特性 • 高性能:TPC-C 7.07亿tpmC 世界第一 Oracle 兼容 MySQL 兼容 • 高可扩展:水平和垂直扩展,自动负载均衡,弹性扩缩容 企业级 SQL 引擎 SQL 优化 SQL 执行 • 高可用:RPO=0,RTO<8s 存储过程 • Oracle/MySQL兼容:业务少量修改即可迁移到OB,自动评 估和迁移工具 • 单机分布式一体化:高效单机和分布式,按需转换 可扩展的分布式架构 • HTAP:同一套引擎同时支持OLTP和OLAP混合负载 分布式存储 分布式事务 分布式调度 • 低成本:LSM-Tree,编码压缩,存储空间MySQL 1/3 • 原生多租户:集中管理多个业务数据,适合微服务架构和 基于 Paxos 的容灾架构 同城三机房 两地三中心 SaaS行业应用 三地五中心 • 安全:透明加密、传输加密,安全审计,细粒度权限 • 国产化:适配鲲鹏、海光等芯片 社区版 企业版 公有云 • 完备产品体系:开发(ODC)、评估(OMA)、迁移 (OMS)、运维(OCP)、诊断(OAS)
7. OceanBase 4.0整体架构 写操作 弱一致性读 读操作 驱动/OBProxy 对等节点 SQL路由 ZONE_2 ZONE_3 OBServer OBServer OBServer SQL SQL SQL ZONE_1 • 无共享集群 • OBServer包含SQL、存储、事务 高可扩展性 • • 按分区做数据分片扩展 多Zone多活扩展 单集群规模 水 平 扩 展 P1 P2 P1 P2 P1 P2 • TPC-C使用1557节点 P0 P4 P0 P4 P0 P4 单机分布式一体化 OBServer OBServer OBServer SQL SQL SQL P5 P6 P5 P6 P5 P6 P7 P8 P7 P8 P7 P8 基于Paxos复制的日志流 无损自动容灾 • • • • 日志流:数据库的所有变更 多个分区可共用一个日志流 单机内无分布式事务 低时延分布式处理技术
8. 稳定可靠的金融级分布式数据库 以下数据来自于实际生产系统 6100 >200 万次/秒 台 数据库峰值处理能力 集群节点数 RPO=0, RTO<8 >6 >3200 PB 亿行 秒 单库存储容量 单表行数 少数副本故障时
9. OLTP能力试金石:TPC-C世界第一 TPC-C世界第一 • TPC-C是国际最权威的OLTP评测 • 严格ACID测试 • 第一个通过TPC-C的分布式数据 • 第一个通过TPC-C的中国数据库 • 事务模型 • New-Order事务10%分布式 • 性能表现 • 稳态运行8小时tpmC抖动小于1% • 平均23分钟完成一次快照
10. OLAP小试牛刀:TPC-H 30,000GB获得世界第一 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2.2 3.2 • OceanBase 3.2 TPC-H整体性能提升620% • 优化器 • 优化时间提升10倍;新增改写规则 • 直方图;统计信息管理 • 全新SQL执行引擎 • Cache友好:强类型、向量化执行 • MPP&SMP并行执行框架(64节点4096并行度) • 并行DML、超大事务支持
11. OceanBase 4.0 OLAP能力增强 性能提升3.4倍 • • • • 918s -> 270s 一阶段分布式查询优化 自适应执行引擎 三阶段并行下压
12. SQL并行执行
13. 自适应TP+AP混合负载的执行引擎 SQL执行 • 多种执行模式 • 向量化执行 • 大规模并行处理 串行执行 分布式执 行 本地执行 本地数据 并行执行 远程数据 并行查询 本地并行 并行DML 分布式并 行
14. 并行执行调度 DFO2 DFO1 DFO0
15. 丰富的分布式执行策略 CREATE TABLE R1(a int, b int, c int) PARTITION BY HASH(b) PARTITIONS 4; CREATE TABLE R2(a int, b int, c int) PARTITION BY HASH(b) PARTITIONS 4; Partition Wise Join R1 Partial Partition Wise Join Hash-Hash Distribution Join R1.b = R2.b R1.b = R2.a R1.a = R2.a HJ HJ R2 R1 Broadcast Distribution Join R1.a = R2.a HJ HJ EX(PKEY) EX(HASH) EX(HASH) R2 R1 R2 分布式连接算法 R1 EX(Broadcast) R2
16. 自适应执行 create table R1(a int primary key, b int, c int) partition by hash(a) partitions 4; select b, sum(c) from R1 group by b; ========================================================== |ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------- |0 |PX COORDINATOR | |1 |10 | |1 | EXCHANGE OUT DISTR |:EX10001|1 |10 | |2 | HASH GROUP BY | |1 |9 | |3 | EXCHANGE IN DISTR | |1 |9 | |4 | EXCHANGE OUT DISTR (HASH)|:EX10000|1 |8 | |5 | HASH GROUP BY | |1 |8 | |6 | PX PARTITION ITERATOR | |1 |7 | |7 | TABLE SCAN |r1 |1 |7 | ========================================================== Group by/Distinct下压 • 优化器总是下压 • 执行时基于实际数据特征 决定是否跳过下压的算子
17. 高级查询优化器
18. 一阶段分布式查询优化 两阶段变为一阶段 • 避免不优的计划 • 执行计划包含分区位置信息 • 秒级完成50表连接的优化
19. 并行下压 下压场景 例子 v3.2 v4.0 Group by, 无distinct去重的 聚合函数 select a, sum(d) from t group by a; 支持 支持 Group By, 有distinct去重的 聚合函数 select a, sum(distinct c),count(distinct d) from t group by a; 不支持 支持 Rollup select a, sum(d) from t group by a rollup(b); 不支持 支持 Distinct select distinct a from t; 支持 支持 Window Function select a, b, sum(d) over (partition by c) from t; 不支持 支持 create table R1(a int, b int, c int, d int, primary key(a, b)) partition by hash(b) partitions 4; select sum(distinct c) from R1 where a = 5; ====================================== |ID|OPERATOR |NAME | -------------------------------------- |0 |SCALAR GROUP BY | | |1 | PX COORDINATOR | | |2 | EXCHANGE OUT DISTR |:EX10000| |3 | PX PARTITION ITERATOR| | |4 | TABLE SCAN |r1 | ====================================== ============================================ |ID|OPERATOR |NAME | -------------------------------------------- |0 |SCALAR GROUP BY | | |1 | PX COORDINATOR | | |2 | EXCHANGE OUT DISTR |:EX10001| |3 | MERGE GROUP BY | | |4 | EXCHANGE IN DISTR | | |5 | EXCHANGE OUT DISTR (HASH)|:EX10000| |6 | HASH GROUP BY | | |7 | PX PARTITION ITERATOR | | |8 | TABLE SCAN |r1 | ============================================
20. 行列混合存储
21. OceanBase存储引擎 Row Cache Get Small-Query MemTable (WOS) Mutation Row-level In-Memory Redo/MVCC Scan Big-Query Logs In-Memory Hash Block Cache In-Memory B + -Tree Memory Disk Dump SSTable Multiple storage versions SSTable (ROS)
22. 行列混合存储及编码压缩 • 编码 • • • • • 按列编码 提升数据相似度 规则发现 微块自主选择 经验推导 • 解码 • 无需解压, 直接查询 • 效果 • 存储空间是MySQL/Oracle 1/3 • 查询缓存使用效率提升 Microblock Header Col1 Header Col2 Header Col3 Header Col1 Col2 Col3 Row 1 Row 2 ...... Row n Row index
23. 查询过滤下压 MEMTable • 充分利用编码优势加速查询 Minor SSTable • LSM-Tree难点 • 增量数据交叉 • 谓词算子下压 encoding encoding microblock microblock Major SSTable • 利用编码聚合信息快速过滤 • 按列过滤充分利用剪枝 • 向量化 • 按列批量解码 • SIMD加速 Microblock Header Col1 Header Col1 Col2 Header Col3 Header Col2 Col3 Row 1 And col3 < 1 col2 > 3 Row 2 ...... Row n Row index Col1 value Result Bitmap Col1 value Col1 value Col1 value
24. HTAP资源隔离
25. 多租户 APP_2 APP_1 OBProxy OBProxy OBProxy OBServer OBServer OBServer Tenant_1 Tenant_1 Tenant_1 P1 P2 Tenant_SYS RS P1 P2 P1 Tenant_SYS RS P1 P1 P2 Tenant_SYS RS P1 OBServer OBServer OBServer Tenant_1 Tenant_1 Tenant_1 P3 P4 Tenant_2 P1 P2 ZONE_1 P3 P4 Tenant_2 P1 P2 ZONE_2 P3 P4 Tenant_2 P1 P2 ZONE_3 一个集群多个租户 • 多种租户类型并存 • 资源隔离与共享 • 大小租户独立扩缩容 • 统一运维管理 解决业务痛点 • 适合微服务应用架构 • 适合多租户SaaS服务 • 适合集团化数据管理
26. 混合负载的资源隔离 决策分析类业务 交易类业务、实时报表业务 Writes Weak Reads Reads OBProxy 交易支付 OBProxy 批作业 灵活的隔离机制 OBServer 资源组1 P1 P3 OBServer 资源组2 资源组1 资源组2 资源组1 资源组2 P2 P1 P2 P1 P2 P4 OBServer 资源组1 OBServer 资源组2 P3 P4 OBServer 资源组1 资源组2 P4 P3 OBServer 资源组1 资源组2 OBServer 资源组3 P1 P2 P4 P3 OBServer 资源组3 • 物理隔离 • 弱一致性读读写分离 • 多Zone读写分离 • 混合负载 • 基于cgroup的资源组 • 用户名匹配 • SQL语句级匹配 • 大查询自动隔离 P5 P6 P5 P6 P5 P6 P5 P6 P7 P8 P7 P8 P7 P8 P7 P8 ZONE_1 ZONE_2 ZONE_3 ZONE_4 • 独立大查询队列
27. 快速导入
28. 旁路(direct path)导入 OSS 本地 文件 obloader 数据节点 tableAPI load data infile insert into select 路由和控 制节点 数据节点 数据节点 clog 备节点 Tablet clog locked 快速执行路径 优化写入放大问题 表锁阻塞写入 Tablet’ MEMT SST • • • 备节点 导入数据 SST locked
29. 旁路导入性能 6000 5160 4920 5000 4000 3000 1967 2000 1000 1952 1402 737 251 0 4xlarge(16c32G) 堆表 普通插入 12xlarge(48c96G) 堆表 旁路导入 索引组织表 普通导入 索引组织表 旁路导入 459
30. 小结:OceanBase的OLAP能力和特性 基本能力 OLAP功能特性 • 稳定可靠、高可扩展、高可用 • 复杂查询(大量表JOIN、复杂子查询) • 并行执行引擎 • 高级查询优化器 • 低成本高性能行列混合存储 • 多租户与HTAP资源隔离 • 分析函数(窗口函数、rollup) • 层次查询(connect by) • 表函数(from table) • 自定义管道函数(pipelined table) • JSON、GIS类型 • 用户自定义函数UDF • 自定义聚集函数 • 异构数据库集成:dblink • 导入:load data infile, obloader, 快速导入 • 导出:select into outfile, obdumper • 联邦查询:外表
31.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-14 11:09
浙ICP备14020137号-1 $Carte des visiteurs$