---
title: "Fork 概述 - OceanBase AI 数据库 V4.6.2 | OceanBase 文档中心"
description: Fork 概述 说明 本功能在当前版本为实验特性。 Fork 是 OceanBase 提供的数据克隆能力，允许用户基于现有表或数据库快速创建一个独立的副本。Fork 在满足一致性要求的前提下，尽量复用已有的数据组织和存储结构，避免全量数据复制。目标对象后续写入会产生增量存储开销。 Fork 方式 Fork 可以作用于…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*w3cwQYKZAJwAAAAAHhAAAAgAeiGDAQ/original) OceanBase AI 数据库V 4.6.2

# Fork 概述

更新时间：2026-09-15 17:00:16

[编辑](https://github.com/oceanbase/oceanbase-database-ai/edit/V4.6.2/zh-CN/380.data-branching/100.data-branching-overview.md)

#### 说明

本功能在当前版本为实验特性。

Fork 是 OceanBase 提供的数据克隆能力，允许用户基于现有表或数据库快速创建一个独立的副本。Fork 在满足一致性要求的前提下，尽量复用已有的数据组织和存储结构，避免全量数据复制。目标对象后续写入会产生增量存储开销。

## Fork 方式

Fork 可以作用于单张表或整个数据库，分别对应局部数据隔离和完整环境复制两种场景：

- **Fork Table**：基于源表在某个快照时刻的数据，创建一张独立的目标表。目标表包含源表的完整结构和数据，创建后与源表完全独立，可自由读写。详见 [Fork Table](https://www.oceanbase.com/docs/common-oceanbase-database-ai-1000000006779060)。
 - **Fork Database**：基于源数据库在某个快照时刻的全量数据，创建一个独立的目标数据库。底层对源库中的每张用户表依次执行 Fork，并保证所有表共享同一快照版本，确保跨表数据一致性。详见 [Fork Database](https://www.oceanbase.com/docs/common-oceanbase-database-ai-1000000006779061)。

**Fork Table** 与 **Fork Database** 对比如下

| 维度 | Fork Table | Fork Database |
| --- | --- | --- |
| 克隆粒度 | 单张表 | 整个数据库（所有用户表） |
| 适用场景 | 只需要部分表的数据隔离 | 需要完整数据库环境的隔离 |
| 跨表一致性 | 不涉及 | 库内所有表共享同一快照版本 |
| 语法 | `FORK TABLE ... TO ...` | `FORK DATABASE ... TO ...` |

## 使用场景与价值

### 数据版本与分支管理

团队在同一份基线数据上并行推进多种改动（修订脏数据、调整特征字段、变更索引策略等）时，直接修改原表风险高且难以回退，完整复制又耗时且占用大量存储。

Fork 允许围绕同一基线快速派生多个独立分支，各分支互不影响，多人可并行操作。每个副本对应源对象的某个快照时刻，数据来源清晰；改动未达预期时可直接切回原分支，实现轻量回滚。

### A/B 实验与沙箱验证

许多验证工作必须基于真实生产数据才有意义，但直接在生产环境实验风险不可接受，独立搭建测试环境又成本高、数据易偏差。

Fork 可快速创建生产数据的隔离副本，实验在副本中进行，线上数据不受影响。当需要横向对比多个方案时，可分别为每个方案创建独立副本，在各自环境中验证后再统一评估。

### Vibe Coding 与合成数据迭代

用自然语言驱动数据开发时，生成结果具有不确定性，需要反复试验，但每次试验不应污染已有数据。

Fork 出的副本充当可自由修改、随时丢弃的工作空间。用户在副本中通过自然语言指令调整表结构与数据，形成"描述—生成—验证"的闭环。未达预期则重新 Fork 一份继续迭代，无额外负担。

### 数据迁移与备份验证

灾备演练、测试环境搭建、数据归档前的正确性核对都需要完整副本，而库级数据复制通常耗时以小时计且需预留同等存储，导致这类验证常被简化甚至跳过。

库级 Fork 可快速创建整库副本，用于容灾演练、测试环境搭建或归档前的完整性验证。创建成本极低，使原本因代价过高而被省略的验证环节得以纳入常规流程。

## 功能特性

#### 说明

V4.6.2.1 版本起支持并行 Fork 和后台并行处理功能。

| 特性 | 说明 |
| --- | --- |
| 高效创建 | 创建目标对象时避免全量复制数据，适合大表和整库场景 |
| 在线执行 | Fork 过程中源表可以继续进行 DML 读写 |
| 快照一致性 | 目标对象的数据与源对象在 Fork 快照时刻保持一致。Fork Database 中的所有表共享同一个快照版本 |
| 读写隔离 | Fork 完成后，源对象和目标对象相互独立，任一方的后续写入都不会影响另一方 |
| 渐进可用 | 目标对象创建后即可访问，后台数据组织的完善不影响对外提供的快照语义和可用性 |
| 并行 Fork | 支持同时对同一源对象发起多个 Fork，各目标对象的创建互不阻塞 |
| 后台并行处理 | 后台数据处理采用多线程并行执行，提升 Fork 整体完成效率 |

Fork 也可以用于版本回退。分支验证失败时，停止使用并删除分支即可回到原版本；验证通过时，可按业务和运维流程将分支切换为默认版本。

## 权限说明

发起 Fork 需要同时具备源对象的 `SELECT` 权限和目标对象的 `CREATE` 权限：

| 操作 | 源对象权限 | 目标对象权限 |
| --- | --- | --- |
| Fork Table | 源表 `SELECT` | 目标库 `CREATE` |
| Fork Database | 源库库级 `SELECT` | 目标库 `CREATE` |

- Fork Table 的源表 `SELECT` 可以由全局、库级或表级权限满足。
 - Fork Database 要求源库库级 `SELECT`，全局或源库库级权限可以满足；仅拥有源库中各表的表级 `SELECT` 不满足要求。
 - Fork 只能在当前租户内执行，不支持 sys tenant。

Fork 只复制 schema 和数据，不复制源对象上的授权，也不会自动给 Fork 发起人增加权限。目标对象按照普通新建对象判断权限：如果发起人只有 `CREATE`、没有目标对象的 `SELECT`，Fork 可以成功，但不能查询目标数据。

## 通用限制与约束

1. **操作互斥**：Fork Table 执行期间，源表和目标表会与相关 DDL 操作互斥。Fork Database 执行期间，源库及其中的表会与 DDL 操作互斥（如 `DROP TABLE`、`DROP DATABASE`）。Fork 期间源对象仍可继续进行 DML 读写。
 2. **目标对象已存在**：如果目标对象已存在，或目标表与外键占位父表（mock FK parent table）重名，系统会报错。需先删除已有目标对象或更换名称。
 3. **回收站对象**：不支持 Fork 已进入回收站的表或数据库。
 4. **系统或内部对象**：不支持 Fork 内部表以及系统或内部数据库。
 5. **存储开销**：Fork 创建时通过复用源对象的存储结构减少初始开销，后续对目标表/库的修改会增量产生存储消耗。
 6. **级联 Fork**：支持对 Fork 产生的目标表/库再次执行 Fork，但在当前 Fork 操作的后台处理结束前，不支持级联 Fork。

## 常见问题

**Q：Fork 出来的表/库和源表/库是什么关系？**
 A：完全独立。Fork 只是借用了源数据的一个快照作为初始状态，创建完成后两者互不影响。

**Q：Fork 会影响源表的读写性能吗？**
 A：Fork 操作本身对源表/源库的性能影响极小。Fork 完成后，源表/源库和目标表/库的读写互不干扰。

**Q：Fork 过程中源对象还能写入吗？**
 A：可以。Fork 过程中可以继续进行 DML 读写，但相关 DDL 会与 Fork 操作互斥。

**Q：Fork 能指定历史时间点吗？**
 A：当前版本不支持用户指定时间点，系统会自动选取合适的快照时刻。

**Q：为什么后台处理还未完全结束，目标对象就可以使用？**
 A：Fork 会先完成目标对象的创建并提供访问能力，后续数据组织在后台继续进行。该过程不影响快照一致性和正常读写。

**Q：Fork 与传统数据复制有什么区别？**
 A：传统复制通常需要进行全量数据拷贝。Fork 采用增量复制和存储复用技术，创建速度更快，资源消耗更少。

**Q：源表被删除后，Fork 出的目标表还能用吗？**
 A：目标表在 Fork 完成后是独立的，不依赖源表的后续状态。

**Q：Fork Database 能保证所有表的数据是同一时刻的吗？**
 A：能。Fork Database 保证库内所有表共享同一个快照版本。

**Q：Fork Database 与逐表执行 Fork Table 有什么区别？**
 A：Fork Database 对库内所有表使用同一个快照版本，可以保证多表数据一致性；逐表执行 Fork Table 时，各表的快照时刻可能不同。Fork Database 还会创建目标库并继承源库的数据库属性。

**Q：同一个源数据库可以多次 Fork 吗？**
 A：可以，且支持同时发起。多次 Fork 到不同的目标库可并行执行，各目标库的数据为各自 Fork 时刻的快照，相互独立。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
