OceanBase 的 OLAP 能力提升实践
OceanBase 简介
OceanBase 是一款自主研发的分布式数据库,拥有完整知识产权,核心能力100%掌控。其发展历程如下:
- 2010年:产品立项,第一个用户为支付宝账务
- 2016年:支撑蚂蚁金服核心账务
- 2017年:打破TPC-C世界纪录(6100万tpmC)
- 2019年:推出HTAP混合负载引擎(TPC-C 7.07亿tpmC)
- 2020年:V3.0版本支持HTAP
- 2021年:规模化推广公有云和社区用户
- 2022年:生态大拓展
产品特性:
- 高性能:TPC-C世界第一(7.07亿tpmC)
- 高可用:RPO=0,RTO<8s
- 高可扩展:水平/垂直扩展,自动负载均衡
- 兼容性:Oracle/MySQL兼容,业务少量修改即可迁移
- 架构:单机分布式一体化,基于Paxos的容灾架构
- HTAP:同一套引擎支持OLTP和OLAP混合负载
- 成本:LSM-Tree、编码压缩,存储空间MySQL/Oracle 1/3
- 多租户:原生多租户,适合微服务架构和SaaS
- 安全:透明加密、传输加密,安全审计
- 国产化:适配鲲鹏、海光等芯片
- 产品体系:开发(ODC)、评估(OMA)、迁移(OMS)、运维(OCP)、诊断(OAS)
SQL 并行执行
OceanBase 采用自适应TP+AP混合负载的执行引擎,支持多种执行模式:
- 串行执行
- 本地执行(本地/远程数据)
- 分布式执行(并行查询、并行DML)
- 向量化执行
- 大规模并行处理(4096并行度)
并行执行调度:
- 分布式连接算法:Hash-Hash Distribution Join、Broadcast Distribution Join等
- 丰富的分布式执行策略
高级查询优化器
OceanBase 4.0优化器从两阶段变为一阶段分布式查询优化:
- 避免不优的计划
- 执行计划包含分区位置信息
- 秒级完成50表连接的优化
并行下压能力增强:
- 支持Group By(无/有distinct去重的聚合函数)
- 支�持Rollup
- 支持Distinct
- 支持Window Function
行列混合存储引擎
OceanBase 采用多种存储版本:
- Dump SSTable
- Memory
- In-Memory Hash/In-Memory B+-Tree
- MemTable(WOS)
- SSTable(ROS)
- Block Cache/Row Cache
- Mutation Logs
行列混合存储及编码压缩:
- 按列编码,提升数据相似度
- 微块自主选择编码规则
- 无需解压直接查询
- 存储空间是MySQL/Oracle 1/3
- 查询缓存使用效率提升
查询过滤下压:
- 利用编码优势加速查询
- 谓词算子下压
- 按列过滤充分利用剪枝
- 向量化+SIMD加速
资源隔离
OceanBase 支持多租户:
- 多种租户类型并存
- 资源隔离与共享
- 大小租户独立扩缩容
- 统一运维管理
混合负载的资源隔离:
- 基于Zone的资源组隔离
- 读写分离(物理隔离、弱一致性读、多Zone读写分离)
- 混合负载支持
- 灵活的隔离机制(物理隔离、用户名匹配、SQL语句级匹配、大查询自动隔离)
快速导入
OceanBase 支持旁路(direct path)导入:
- MEMT导入
- SSTablet导入
- 快速执行路径
- 优化写入放大问题
- 表锁阻塞写入备节点
旁路导入性能:
- 堆表、索引组织表导入性能对比,旁路导入性能显著提升
小结
OceanBase 的OLAP能力和特性:
- 基本能力:
- 稳定可靠、高可扩展、高可用
- 并行执行引擎
- 高级查询优化器
- 低成本高性能行列混合存储
- 多租户与HTAP资源隔离
- OLAP功能特性:
- 复杂查询(大量表JOIN、复杂子查询)
- 分析函数(窗口函数、Rollup)
- 层次查询(connect by)
- 表函数(from table)
- 自定义管道函数(pipelined table)
- JSON、GIS类型
- 用户自定义函数UDF
- 自定义聚集函数
- 异构数据库集成:dblink
- 导入:load data infile, obloader, 快速导入
- 导出:select into outfile, obdumper
- 联邦查询:外表