news 2026/3/5 0:46:53

OceanBase PG = Partition Group(分区组)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OceanBase PG = Partition Group(分区组)

目录标题

    • 1️⃣ 基本定义
    • 2️⃣ 层级关系
    • 3️⃣ PG 的特点
    • 4️⃣ 在 PG 模式与 PG + PostgreSQL 模式的区别
    • 5️⃣ 简单示意图
      • 总结
  • 🧩 OceanBase PG 架构示意图(ASCII 图)
  • 📌 图示说明
      • ✔ 1. Tenant(租户)
      • ✔ 2. Table(表)
      • ✔ 3. Partition(表分区)
      • ✔ 4. **PG = Partition Group(分区组)**
      • ✔ 5. Replica(副本)
  • 📌 更直观的全流程示意(分布式)
  • 📌 为什么 OB 要引入 PG?

1️⃣ 基本定义

  • PG = Partition Group(分区组)
  • 一个 PG 里面包含若干个副本(Replica),负责存储某一部分表的数据。
  • OceanBase 将数据按Tenant → Table → Partition → PG → Replica的层级管理。

2️⃣ 层级关系

层级说明
Tenant租户,相当于一个数据库实例
Table表,属于某个 Tenant
Partition表的分片(如果表分区)
PG分区组,每个 PG 存放一个或多个分区的数据副本
Replica副本,一个 PG 可以有多个副本(通常 3 个)分布在不同节点上

所以 PG 是数据分片的副本集合,是 OceanBase 数据一致性与高可用的最小管理单元。


3️⃣ PG 的特点

  1. 高可用

    • 一个 PG 通常有 3 个副本(leader + follower + learner)。
    • Leader 负责读写请求,Follower 提供备份和读取。
  2. 分布式存储

    • 不同 PG 的副本分布在不同的 observer 节点上。
    • 一个大表可能跨多个 PG,每个 PG 存储表的一部分数据。
  3. 数据迁移 / 负载均衡单位

    • OB 调度节点做扩容/迁移时,都是以 PG 为单位搬迁数据。
    • PG 的迁移不会影响其他 PG 的正常读写。

4️⃣ 在 PG 模式与 PG + PostgreSQL 模式的区别

  • OB 有MySQL 模式PostgreSQL 模式
  • PostgreSQL 模式下,你会看到 PG 概念更加明显,因为每个 PG 就是一个逻辑分片 + 副本集合
  • MySQL 模式下,表也会有 PG,但对使用者来说是透明的(你直接访问表即可,PG 在后台管理)。

5️⃣ 简单示意图

Tenant (mysqlt1) └─ Table (user_info) ├─ Partition 1 │ └─ PG 101 │ ├─ Leader Replica -> Node1 │ ├─ Follower Replica -> Node2 │ └─ Follower Replica -> Node3 └─ Partition 2 └─ PG 102 ├─ Leader Replica -> Node2 ├─ Follower Replica -> Node3 └─ Follower Replica -> Node1

每个 PG 有自己独立的 Leader/Follower,读写请求会路由到 Leader。


总结

  • PG = Partition Group = 分区组 + 副本集合
  • PG 是 OB 的最小管理和调度单位
  • PG 决定数据的高可用、分布式存储和负载均衡策略

下面给你画一张OceanBase PG(Partition Group)架构的完整示意图,包括 Tenant → Table → Partition → PG → Replica 的关系,清晰直观。


🧩 OceanBase PG 架构示意图(ASCII 图)

┌──────────────────────────────────────────────────────────────┐ │ Tenant: mysqlt1 │ │ (每个租户都有独立的资源 + 数据 + 事务管理) │ └──────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ Table: order_info │ │ (表可能有 0/1/N 个 Partition,视分区策略而定) │ └──────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────┬──────────────────────────┐ │ Partition 0 │ Partition 1 │ │ (非分区表则只有1个) │ (范围/哈希分区) │ └──────────────────────────┴──────────────────────────┘ │ │ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ │ PG 1001 │ │ PG 1002 │ │(分区组/最小管理单元)│ │(分区组/最小管理单元)│ └──────────────────┘ └──────────────────┘ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ┌────────────┬────────────┬────────────┐ (副本) │ Leader │ Follower │ Follower │ │ Node1 │ Node2 │ Node3 │ └────────────┴────────────┴────────────┘

📌 图示说明

✔ 1. Tenant(租户)

OceanBase 多租户架构,每个租户相当于一个“独立的数据库实例”
不同租户之间数据隔离、资源隔离。


✔ 2. Table(表)

一个租户下可以有多张表。


✔ 3. Partition(表分区)

表可能:

  • 不分区 → 1 个分区
  • Range / List / Hash 分区 → N 个分区

✔ 4.PG = Partition Group(分区组)

PG 是 OB最核心的概念,是最小的数据调度、复制、高可用单元。

每个 PG 下包含多个副本(通常为 3):

  • 1 个 Leader(负责事务提交、读写)
  • 2 个 Follower(副本 + 提供只读能力)

OceanBase 的数据迁移、均衡、备份、恢复都以PG 为粒度进行。


✔ 5. Replica(副本)

PG 会在多个节点(observer)上放置多个副本:

副本类型功能
Leader处理写入、强一致读取
Follower接收日志同步,用于 HA、高可用
学习者副本(可选)备份或归档使用

📌 更直观的全流程示意(分布式)

Tenant ↓ Table ↓ Partition(s) ↓ ┌───────────┐ │ PG │ <--- OceanBase 的最小调度单元 └───────────┘ ↓ ↓ ↓ Replica Leader/Follower 分布三个不同 observer 节点

📌 为什么 OB 要引入 PG?

PG 解决分布式数据库的 3 个核心问题:

高可用
用副本 + Leader 机制实现。

负载均衡
以 PG 为单位迁移,避免一次性搬迁大表。

弹性扩容
只需把 PG 迁移到新节点即可。


如果你愿意,我还能:

✅ 画PG 迁移流程图
✅ 画事务在 PG Leader 上执行的流程图
✅ 画备份(Backup Set)与 PG 之间的关系图

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/27 4:01:15

Fritzing电子设计软件:从零基础到专业PCB设计的完整指南

Fritzing电子设计软件&#xff1a;从零基础到专业PCB设计的完整指南 【免费下载链接】fritzing-app Fritzing desktop application 项目地址: https://gitcode.com/gh_mirrors/fr/fritzing-app 你是否曾因为复杂的电路图而感到头疼&#xff1f;是否希望有一款工具能像拼…

作者头像 李华
网站建设 2026/3/3 10:27:20

Waymo数据集访问权限问题终极解决方案:快速上手与避坑指南

Waymo数据集访问权限问题终极解决方案&#xff1a;快速上手与避坑指南 【免费下载链接】waymo-open-dataset Waymo Open Dataset 项目地址: https://gitcode.com/gh_mirrors/wa/waymo-open-dataset 还在为Waymo开放数据集的"AccessDeniedException"错误而烦恼…

作者头像 李华
网站建设 2026/2/24 19:27:02

基于语义混淆的AI生成SVG钓鱼攻击分析与防御

1 引言近年来&#xff0c;随着大型语言模型&#xff08;Large Language Models, LLMs&#xff09;在代码生成、文本创作等领域的广泛应用&#xff0c;其双刃剑特性在网络安全领域日益凸显。一方面&#xff0c;安全厂商利用AI提升威胁检测、自动化响应与情报分析能力&#xff1b…

作者头像 李华
网站建设 2026/3/1 23:14:42

【少儿编程】Scratch vs Python:区别、学习顺序实操指南

Scratch和Python是少儿编程的常见选择&#xff0c;均有助于培养孩子的逻辑思维和解决问题能力&#xff0c;但也存在诸多差异。针对如何选择与学习的困惑&#xff0c;本文将详细解析&#xff0c;助您理清思路。一、Scratch与Python的深度对比维度ScratchPython交互方式鼠标拖拽彩…

作者头像 李华
网站建设 2026/2/28 19:53:41

PyTorch-VAE深度学习工具库:18种变分自编码器实战应用指南

PyTorch-VAE深度学习工具库&#xff1a;18种变分自编码器实战应用指南 【免费下载链接】PyTorch-VAE PyTorch-VAE - 一个基于PyTorch的变分自编码器(VAE)模型集合&#xff0c;专注于可重复性&#xff0c;适合对深度学习和生成模型有兴趣的研究者和开发者。 项目地址: https:/…

作者头像 李华
网站建设 2026/2/25 13:54:27

Subnautica Nitrox多人联机模组:从零开始打造团队深海冒险

想象一下&#xff0c;当你驾驶着潜水器穿梭在神秘的海底洞穴时&#xff0c;身旁有队友为你导航&#xff1b;当你建造宏伟的水下基地时&#xff0c;有伙伴与你共同规划蓝图。这正是Subnautica Nitrox为《深海迷航》带来的革命性改变——将孤独的生存挑战转变为精彩的团队冒险。 …

作者头像 李华