---
title: "Fork Table - OceanBase AI 数据库 V4.6.2 | OceanBase 文档中心"
description: Fork Table 说明 本功能在当前版本为实验特性。 Fork Table 基于源表在某个快照时刻的数据，创建一个全新的目标表。目标表在逻辑上等价于源表在该快照时刻的完整副本（包括表结构和数据），但作为独立的表对象存在，后续的读写操作互不影响。 语法 FORK TABLE source_table TO dest…
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 Table

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

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

#### 说明

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

Fork Table 基于源表在某个快照时刻的数据，创建一个全新的目标表。目标表在逻辑上等价于源表在该快照时刻的完整副本（包括表结构和数据），但作为独立的表对象存在，后续的读写操作互不影响。

## 语法

```sql
FORK TABLE source_table TO destination_table;

```

## 参数说明

| 参数 | 说明 |
| --- | --- |
| `source_table` | 源表名，支持 `db.table` 或 `table`（使用当前库） |
| `destination_table` | 目标表名，支持 `db.table` 或 `table`（使用当前库） |

## 示例场景

### 创建副本表并进行读写

快速创建表副本，副本可独立读写，不影响源表。

```sql
-- 创建副本
FORK TABLE t1 TO t1_fork;

-- 查询副本
SELECT count(*) FROM t1_fork;

-- 写入副本（不影响源表 t1）
INSERT INTO t1_fork VALUES (...);

```

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

基于主版本派生分支，在分支上实验，随时可回滚或推广。

```sql
-- 步骤 1：创建分支（数据基线为 Fork 时刻的快照）
FORK TABLE t1 TO t1_branch_v2;

-- 步骤 2：在分支上执行变更（数据修订、特征更新、索引调整等）
-- ... 对 t1_branch_v2 执行 DML ...

-- 步骤 3a：回滚——丢弃分支
DROP TABLE t1_branch_v2;

-- 步骤 3b：推广——将分支切换为主版本（通过原子 RENAME）
-- RENAME TABLE t1 TO t1_backup, t1_branch_v2 TO t1;
-- DROP TABLE t1_backup;

```

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

基于线上表创建隔离副本，在副本中安全实验，完成后按需保留或丢弃。

```sql
-- 创建实验表
FORK TABLE t_search_prod TO t_search_exp;

-- 在实验表上变更与评估
-- ... 对 t_search_exp 执行写入与查询评估 ...

-- 实验不通过：丢弃实验表
DROP TABLE t_search_exp;

```

## 核心特性

#### 说明

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

| 特性 | 说明 |
| --- | --- |
| 高效创建 | 复用源表的数据组织和存储结构，避免全量数据复制，适合大表场景 |
| 在线执行 | Fork 过程中源表可以继续进行 DML 读写 |
| 独立可写 | 目标表可独立执行 INSERT、UPDATE、DELETE、DDL 等操作，不影响源表 |
| 快照一致性 | 目标表的数据基于系统自动选取的快照时刻，保证数据一致性 |
| 渐进可用 | 目标表创建后即可访问，后台数据组织的完善不影响快照语义和可用性 |
| 增量存储 | 目标表后续写入的数据会产生额外存储开销 |
| 并行 Fork | 同一个源端支持同时 Fork 到多个目标端 |
| 后台并行处理 | 后台数据处理采用多线程并行执行，提升 Fork 整体完成效率 |

## 性能说明

- 在典型小规模场景下，`FORK TABLE` 可在百毫秒级完成目标表创建并提供访问。
 - 目标表可用后，数据组织可能仍在后台继续完善。
 - 在大事务、数据形态复杂或资源紧张等情况下，处理时间可能变长，但不影响对外的快照一致性和隔离语义。
 - 对于单表多分区场景，系统已优化 Fork 发起时的统计信息处理，降低了发起延迟。

## 权限说明

发起 Fork Table 需要同时具备：

- 源表的 `SELECT` 权限（全局、库级或表级权限均可满足）
 - 目标库的 `CREATE` 权限

Fork 只复制 schema 和数据，不复制源表上的授权。目标表按照普通新建对象判断权限。Fork 只能在当前租户内执行，不支持 sys tenant。

## 操作互斥

Fork Table 执行期间，源表和目标表会与相关 DDL 操作互斥，直至 Fork 完成收尾。Fork 期间，源表仍可继续进行 DML 读写。

## 使用限制

当前版本有如下限制：

- 在当前 Fork 操作的后台处理结束前，不支持级联的 Fork

不支持的表类型和索引：

- 内部表、临时表
 - 含外键的表
 - 列存表
 - HNSW 向量索引、IVF 索引、语义索引、空间索引、混合索引、列存索引、search index、异步索引
 - 带有全局索引的分区表
 - 建有物化视图日志的表，或被物化视图引用（作为增量刷新数据源）的表

其他限制：

- 目标表已存在或与外键占位父表（mock FK parent table）重名时，系统会报错
 - 不支持 Fork 已进入回收站的表
 - 不支持 Fork 系统或内部表

## 注意事项

- Fork 操作不影响源表。源表在 Fork 之后继续正常提供读写服务。
 - 目标表创建后与源表完全独立，对任一方的修改不会反映到另一方。
 - 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) 咨询热线
