当前位置: 首页 > news >正文

OceanBase 架构原理深入

OceanBase 架构原理深入

整体架构全景

Zone 3(机房3)

Zone 2(机房2)

Zone 1(机房1)

SQL 请求

Paxos 同步

Paxos 同步

客户端 / 应用

OBProxy 层
连接代理,路由 SQL 到正确的 OBServer

OBServer-A
Leader

OBServer-B
Follower

OBServer-C
Follower

RootService
全局管理中枢
DDL / 负载均衡 / 元信息管理


一、Paxos 协议与选主流程

每个分区的三个副本构成一个Paxos 组

分区 P0 的 Paxos 组: Zone1: OBServer-A ← Leader(处理读写) Zone2: OBServer-B ← Follower Zone3: OBServer-C ← Follower

写入流程(强一致)

Follower(Zone3)Follower(Zone2)Leader(Zone1)客户端Follower(Zone3)Follower(Zone2)Leader(Zone1)客户端写入请求生成 Redo Log并行发送日志并行发送日志确认收到确认收到(多数派达成)提交事务返回成功

[!tip] 与 Oracle 对比
类似Data Guard 最大保护模式,但不需要所有备库确认,只需多数派(2/3)确认即可提交。

选主流程(Leader 故障时)

Follower(Zone3)Follower(Zone2)Leader(Zone1) ❌Follower(Zone3)Follower(Zone2)Leader(Zone1) ❌获得多数派投票,成为新 Leader心跳超时(2s)心跳超时(2s)发起投票请求投票同意补齐未完成日志恢复正常服务

[!important] 高可用指标

  • RTO < 30秒(故障切换时间)
  • RPO = 0(零数据丢失)

二、LSM-Tree 存储引擎

数据完整生命周期

达到阈值 256MB
转储 Minor Compaction

积累多个
每日合并 Major Compaction

写入请求

MemTable
内存,可读写

Mini SSTable
磁盘,只读

基线 SSTable
完整数据快照

读取流程

读取一行数据

MemTable
有数据?

合并多版本
返回结果

Mini SSTable
有数据?

查基线 SSTable

[!note] 性能特点

  • 写性能极好:顺序追加写,避免随机 IO
  • 读性能:依赖合并和缓存来优化,冷数据读取需合并多层

与 Oracle 对比

对比项OracleOceanBase
存储结构B+TreeLSM-Tree
写入方式随机写(in-place update)顺序追加写
写性能受随机 IO 限制写放大小,吞吐高
类比操作表碎片整理 + 统计信息收集每日合并(Major Compaction)

每日合并管理

-- 手动触发合并(sys 租户下执行)ALTERSYSTEM MAJOR FREEZE;-- 查看合并进度SELECT*FROMoceanbase.CDB_OB_MAJOR_COMPACTION;-- 设置合并时间窗口(凌晨2点开始)ALTERSYSTEMSETmajor_freeze_duty_time='02:00';

[!warning] 注意
合并期间 IO 压力较大,建议设置在业务低峰期执行。


三、分布式事务(2PC + Paxos)

单分区事务(最常见,最快)

SQL 只涉及一个分区 → 直接在该分区 Leader 上执行 → 通过 Paxos 同步给 Follower → 提交

无需跨节点协调,性能接近单机数据库。

跨分区事务

P1 Leader(Zone2)P0 Leader(Zone1)协调者P1 Leader(Zone2)P0 Leader(Zone1)协调者Phase 1 - PreparePhase 2 - CommitPrepare(写日志,Paxos确认)Prepare(写日志,Paxos确认)Prepare OKPrepare OKCommitCommit提交完成,释放锁提交完成,释放锁

[!tip] 核心优势
相比 MySQL 分库分表,OceanBase原生支持分布式事务,对应用完全透明,无需业务层处理分布式事务逻辑。


四、SQL 执行完整流程

应用发送 SQL

OBProxy
解析SQL,路由到对应Leader

Parser
词法/语法解析

Resolver
语义解析:表名、列名

Optimizer
生成执行计划
索引选择/分区裁剪

Executor
执行
跨节点则并行下发子计划

OBProxy

返回结果给应用

分区裁剪(Partition Pruning)

[!tip] 与 Oracle 对比
与 Oracle 分区表的 Partition Pruning 原理完全一致。

-- 表按 user_id 哈希分区-- ✅ 可裁剪到单个分区,性能最好SELECT*FROMordersWHEREuser_id=12345;-- ❌ 无法裁剪,扫描所有分区,性能差SELECT*FROMordersWHEREorder_date='2024-01-01';

http://www.jsqmd.com/news/505024/

相关文章:

  • Initia能源交易:打造高效可再生能源与碳交易平台
  • 北京难加工材料零件加工优质厂家推荐榜:航空航天零件加工、钛合金零件加工、钨合金零件加工、铍铜精密零件加工、高精密机械加工选择指南 - 优质品牌商家
  • 【Vue】Vue项目常用的多种创建方式(详细)
  • 数学公式编辑无障碍:CYBER-VISION零号协议辅助MathType与LaTeX公式转换
  • F28335 DSP ePWM模块实战:从基础配置到电机控制
  • 提升开发效率:为谷歌浏览器安装JSON格式化插件
  • 基于springboot医院就诊管理系统设计与开发(源码+精品论文+答辩PPT等资料)
  • 2026年知名的伺服压装机组装品牌推荐:台式伺服压装机/高精度伺服压装机/半自动伺服压装机直销厂家推荐 - 品牌宣传支持者
  • Qwen3-32B-Chat百度技术社区热议:32B模型在24G显存下的量化策略对比实测
  • Nanbeige 4.1-3B部署案例:在树莓派5上运行轻量像素终端(FP16量化版)
  • 深入解析ARM64架构:从寄存器到异常处理
  • 2026年评价高的工程线缆品牌推荐:弹性绝缘线缆公司精选 - 品牌宣传支持者
  • 如何在普通PC上运行macOS?开源Unlocker工具实现VMware完美支持的完整指南
  • 掌握Kohya_SS训练参数更新后的epoch设置:避免常见陷阱的完整指南
  • psst配置文件全解析:自定义你的客户端行为
  • 当软件成本归零,什么会真正崩溃
  • Nanbeige 4.1-3B多场景应用:跨境电商客服终端的像素化品牌升级
  • Linux系统管理员必看:systemctl实战技巧大全(含常见服务管理场景)
  • Kornia光流可视化:动态场景中的几何运动分析完整指南
  • 当AirPods遇上Windows:破解生态壁垒的开源技术方案
  • Beyond Compare 5无限制使用高效解决方案:软件授权与功能解锁指南
  • 如何使用Kornia实现机器人抓取:基于几何的目标位姿估计完整指南
  • 2026泰州全屋定制优质品牌推荐指南:泰州防盗门生产厂家/海陵全屋定制工厂/海陵区全屋定制/兔宝宝全屋定制工厂/选择指南 - 优质品牌商家
  • 如何轻松生成年度微信聊天统计报告:WeChatMsg自动化方案完全指南
  • 科研小白福音:用LabVIEW和NI采集卡,5分钟搞定你的第一个电压信号采集系统
  • 如何在presenterm中高效加载远程资源:图片与代码引用完整指南
  • Kohya_SS在Kaggle云环境中的完整部署指南:解决执行命令缺失问题
  • 如何参与Goutte开源项目开发:完整贡献指南
  • Unsloth Studio:LLM微调UI
  • 手把手教你用Phi-3-vision-128k-instruct:上传图片提问,智能识别分析