如果此刻还不进场拥抱 AI,每天都将错过一个时代。
背景
今天早上学习技术支持同学今川老师的文章《如何在 OceanBase 中观测锁?》时,突然有了一个灵感:可以让 Agent 替我部署 seekdb,并对我比较感兴趣的新特性进行测试,然后整理成文章。
那正好就让 Agent 替我来测试一下 seekdb 的 fork table 能力,看看这个 fork table 特性,对 AI 时代的开发者有哪些重要的用处~
- 提示词 1:根据 www.oceanbase.ai/docs/zh-CN/… 帮我在 mac 安装并运行 seekdb。

人肉装 seekdb 可能会遇到一些问题,例如依赖的库版本不对。但是让 agent 装,会自动分析报错日志并解决了遇到的问题,最终完成了部署。
- 提示词 2:基于刚刚安装的 seekdb,测试下 www.oceanbase.ai/docs/zh-CN/… 里写的 fork table 能力,找到 fork table 特性适合 AI 开发者的用法,然后写一篇 md 格式的测试文章。

能在 seekdb 能查到它测试时的 DDL 执行记录,agent 是真的进行了测试。

在正文开始之前,先以 Vibe Coding 平台为例,“人肉”和大家聊几句 fork table 的作用:

小李在用 AI 生成一个手办商城,他对 AI 说“给商品表加一个限量版标签字段”,AI 自动生成了 ALTER TABLE 语句并执行。这时候平台就会自动创建一个 Table Fork,相当于给当前表结构打了个快照。
过了一会儿,小李通过 Vibe Coding 让 AI 去改了几个字段,加了价格折扣逻辑。结果一测试,发现折扣计算有 BUG,之前能跑的订单流程现在全挂了。
这时候,Table Fork 的回滚能力就派上用场了。
小李在平台上会看到一个版本历史列表,显示:
- “版本 1:初始电商模板”
- “版本 2:加了限量版字段”
- “版本 3:加了折扣逻辑”
他直接点击回滚到版本 2,整个表结构和数据瞬间恢复到加折扣之前的状态,订单流程又能跑了。
这个能力对 Vibe Coding 场景非常重要,因为 AI 生成的代码不一定每次都对,用户需要大胆尝试、快速试错。有了 Table Fork,每次修改都有后悔药,用户敢放心让 AI 改数据库,改坏了一键回滚,不用担心把数据搞乱。这就像 Git 对代码的版本管理,但 Table Fork 是对数据库表的版本管理。
而且 Table Fork 在各个 AI Native DataBase 中,往往都只是一个 DDL 操作,执行非常快速,可以在毫秒级完成 Fork 的动作,相比 Flyway 等数据库版本控制工具,提供的能力要更加灵活和强大。
从下面开始,就都是 AI Agent 自动测试和输出的报告了。经人工 review,暂未发现明显的问题,所以没有人工干预。
seekdb Fork Table 能力测试报告:AI 开发者必备特性
测试时间:2026 年 3 月 31 日 测试环境:seekdb 1.1.0.0 on macOS (Apple Silicon) 测试数据库:my_test, fork_test
一、Fork Table 核心特性概述
Fork Table 是 seekdb 提供的表级能力,能够在系统自动选取的一致性快照时刻,基于源表创建一张目标表副本。

其核心特性包括:
| 特性 | 说明 |
|---|---|
| 隔离性 | 目标表与源表相互隔离,可作为独立的表对象进行后续的读写操作 |
| 一致性 | 目标表反映的是源表在 Fork 时刻的一致性快照,之后源表的变更不会影响目标表 |
| 效率 | 尽量复用已有的数据组织与存储结构,降低复制开销,让创建数据分支更轻量 |
| 渐进可用 | 目标表可在 Fork 完全结束前提供访问能力,后台过程不改变对外的一致性语义 |
基本语法
FORK TABLE <源表名> TO <目标表名>;
二、基础功能测试
2.1 测试:数据隔离性验证

测试步骤:
-- 1. 创建源表并写入数据
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT);
INSERT INTO t1 VALUES(1, 10), (2, 20), (3, 30);
-- 2. Fork 创建副本
FORK TABLE t1 TO t1_fork;
-- 3. 修改源表
INSERT INTO t1 VALUES (4, 40);
UPDATE t1 SET c2 = 999 WHERE c1 = 1;
-- 4. 修改 fork 表
INSERT INTO t1_fork VALUES (5, 500);
UPDATE t1_fork SET c2 = 888 WHERE c1 = 2;
测试结果:
| 表名 | 数据行 | 验证结果 |
|---|---|---|
t1 (源表) | (1,999), (2,20), (3,30), (4,40) | ✅ 源表修改不影响 fork 表 |
t1_fork | (1,10), (2,888), (3,30), (5,500) | ✅ fork 表修改不影响源表 |
结论: Fork Table 实现了完全的写入隔离,源表和目标表的修改互不影响。
三、AI 开发者适用场景测试
3.1 场景一:A/B 实验 - Prompt 策略测试

场景描述: 基于生产环境的知识库数据,创建实验分支来测试不同的 Prompt 生成策略,不影响线上服务。
测试步骤:
-- 假设 doc_table 是生产环境的知识库
SELECT * FROM doc_table LIMIT 3;
-- 输出:
-- | 1 | hello world | seekdb Elasticsearch database |
-- | 2 | hello world, what is your name | seekdb database |
-- | 3 | hello world, how are you | seekdb mysql database |
-- Fork 出实验分支
FORK TABLE doc_table TO doc_table_experiment_v1;
-- 在实验分支中添加新 Prompt 生成的测试数据
INSERT INTO doc_table_experiment_v1 VALUES
(7, '[1,4,1]', 'hello oceanbase, tell me about seekdb',
'seekdb is an AI-native search database with hybrid search capabilities'),
(8, '[2,2,2]', 'how to use fork table in seekdb',
'fork table allows you to create isolated snapshots for experimentation');
测试结果:
| 分支 | 数据行数 | 用途 |
|---|---|---|
doc_table (生产) | 6 行 | 保持生产数据不变 |
doc_table_experiment_v1 | 8 行 | 包含新增的实验数据 |
混合搜索验证:
SET @parm = '{
"query": {
"query_string": {
"fields": ["query", "content"],
"query": "seekdb fork"
}
},
"knn" : {
"field": "vector",
"k": 5,
"query_vector": [1,2,3]
}
}';
SELECT json_pretty(DBMS_HYBRID_SEARCH.SEARCH('doc_table_experiment_v1', @parm));
搜索结果(Top 3):
[
{
"c1": 8,
"query": "how to use fork table in seekdb",
"_score": 3.81,
"vector": "[2,2,2]",
"content": "fork table allows you to create isolated snapshots for experimentation"
},
{
"c1": 1,
"query": "hello world",
"_score": 1.35,
"vector": "[1,2,3]",
"content": "seekdb Elasticsearch database"
},
{
"c1": 7,
"query": "hello oceanbase, tell me about seekdb",
"_score": 1.27,
"vector": "[1,4,1]",
"content": "seekdb is an AI-native search database with hybrid search capabilities"
}
]
结论: ✅ 实验分支支持完整的混合搜索功能,可安全测试新 Prompt 策略。
3.2 场景二:数据版本管理与回滚

场景描述: 为生产数据创建版本快照,支持数据修订后的快速回滚和版本对比。
测试步骤:
-- 创建版本快照
FORK TABLE doc_table TO doc_table_v1_backup;
-- 模拟生产数据的更新/删除
DELETE FROM doc_table WHERE c1 = 1;
UPDATE doc_table SET content = 'updated content' WHERE c1 = 2;
测试结果:
| 版本 | c1=1 的数据 | c1=2 的数据 | 状态 |
|---|---|---|---|
doc_table_v1_backup | hello world | seekdb database | ✅ 保持不变 |
doc_table (当前) | 已删除 | updated content | 已变更 |
结论: ✅ 可通过 Fork Table 实现数据版本快照,支持快速回滚到任意历史版本。
3.3 场景三:Vibe Coding - 合成数据迭代

场景描述: 在 Fork 出来的副本中生成合成数据,用于 AI 模型训练或测试,快速构建和验证合成数据集。
测试步骤:
-- 创建合成数据实验分支
FORK TABLE doc_table TO doc_table_synthetic_v1;
-- AI 生成的合成数据
INSERT INTO doc_table_synthetic_v1 VALUES
(100, '[0.5,0.5,0.5]', 'AI generated query about databases',
'synthetic data for training ML models'),
(101, '[0.6,0.6,0.6]', 'machine learning search optimization',
'AI generated content for testing'),
(102, '[0.7,0.7,0.7]', 'neural network vector similarity',
'synthetic embedding data');
测试结果:
合成数据分支数据:
| c1 | query | content |
|-----|--------------------------------------|---------------------------------------|
| 100 | AI generated query about databases | synthetic data for training ML models |
| 101 | machine learning search optimization | AI generated content for testing |
| 102 | neural network vector similarity | synthetic embedding data |
结论: ✅ 可在隔离的合成数据分支中快速迭代 AI 生成的数据,不影响生产数据。
3.4 场景四:沙箱验证 - 索引策略测试

场景描述: 基于生产数据快照创建沙箱环境,安全测试新的索引策略或表结构变更。
测试步骤:
-- Fork 表用于沙箱测试
FORK TABLE doc_table TO doc_table_sandbox;
-- 在沙箱中测试删除/重建索引
ALTER TABLE doc_table_sandbox DROP INDEX idx2;
-- 验证生产表不受影响
SHOW INDEX FROM doc_table WHERE Key_name = 'idx2';
测试结果:
| 表名 | idx2 索引状态 | 说明 |
|---|---|---|
doc_table_sandbox | 已删除 | 可进行新索引测试 |
doc_table (生产) | 存在 | 索引不受影响 |
结论: ✅ 沙箱表支持 DDL 操作,可安全测试索引策略变更。
3.5 场景五:多分支对比实验

场景描述: 围绕同一份基线数据派生多个分支版本,分别进行不同的数据策略实验,对比效果后选择最优方案。
测试步骤:
-- 创建多个策略分支
FORK TABLE doc_table TO doc_table_strategy_a;
FORK TABLE doc_table TO doc_table_strategy_b;
-- 策略 A: 技术向数据
INSERT INTO doc_table_strategy_a VALUES
(201, '[0.9,0.8,0.7]', 'database optimization techniques',
'index tuning and query optimization for better performance');
-- 策略 B: 业务向数据
INSERT INTO doc_table_strategy_b VALUES
(301, '[0.8,0.9,0.6]', 'business intelligence analytics',
'data driven decision making for enterprise');
向量搜索对比结果:
| 分支 | 搜索 query_vector | Top 结果 | _score |
|---|---|---|---|
strategy_a | [0.9,0.8,0.7] | database optimization techniques | 1.0 |
strategy_b | [0.8,0.9,0.6] | business intelligence analytics | 1.0 |
结论: ✅ 多分支可并行实验不同数据策略,支持 A/B 测试和效果对比。
四、核心能力总结

4.1 能力矩阵
| 能力 | 支持情况 | AI 开发者价值 |
|---|---|---|
| 数据隔离 | ✅ 完全隔离 | 安全实验,不影响生产 |
| 一致性快照 | ✅ 时刻一致 | 可复现的实验环境 |
| 轻量创建 | ✅ 复用存储 | 快速创建多个实验分支 |
| 向量索引继承 | ✅ 完整继承 | 混合搜索能力立即可用 |
| 全文索引继承 | ✅ 完整继承 | 文本搜索能力立即可用 |
| DDL 操作支持 | ✅ 独立修改 | 可测试表结构变更 |
| 多分支并行 | ✅ 无限制 | 支持多策略对比实验 |
4.2 AI 开发者推荐用法
用法 1: RAG 系统 Prompt 工程
-- 为每个 Prompt 版本创建分支
FORK TABLE knowledge_base TO kb_prompt_v1;
FORK TABLE knowledge_base TO kb_prompt_v2;
FORK TABLE knowledge_base TO kb_prompt_v3;
-- 在各分支中测试不同 Prompt 生成的 embedding 和检索效果
用法 2: 模型迭代数据版本控制
-- 为每个模型训练批次创建数据快照
FORK TABLE training_data TO train_data_model_v1;
FORK TABLE training_data TO train_data_model_v2;
-- 支持模型效果对比和问题回溯
用法 3: 合成数据生成沙箱
-- 创建合成数据实验场
FORK TABLE production_data TO synthetic_data_gen;
-- 在沙箱中生成和验证 AI 合成数据
INSERT INTO synthetic_data_gen SELECT ...; -- AI 生成的数据
用法 4: 特征工程实验
-- 为不同特征组合创建分支
FORK TABLE features TO features_experiment_alpha;
FORK TABLE features TO features_experiment_beta;
-- 测试不同特征对模型效果的影响
五、测试环境信息
# seekdb 状态
seekdb-status
# 输出:seekdb is running (PID: 54636)
# 连接信息
mysql -h127.0.0.1 -uroot -P2881 -A
# Web 管理界面
http://127.0.0.1:2886/
# 数据目录
/opt/homebrew/var/seekdb/data
# 日志文件
/opt/homebrew/var/seekdb/data/log/seekdb.log
六、总结
seekdb 的 Fork Table 能力为 AI 开发者提供了轻量级、隔离性、可复现的数据实验环境,特别适合以下场景:
- RAG 系统开发:安全测试不同 Prompt 策略和 embedding 模型
- 数据版本管理:为训练数据和知识库创建可回滚的快照
- 合成数据迭代:在隔离环境中生成和验证 AI 合成数据
- A/B 实验:并行对比多种数据策略和索引方案
- 沙箱验证:安全测试表结构变更和索引优化
Fork Table 与 seekdb 的向量搜索、全文搜索能力完美结合,让 AI 开发者能够快速构建和迭代搜索增强型应用。
测试报告生成时间:2026 年 3 月 31 日
人肉开头,人肉结尾
- OceanBase seekdb 最新版本 1.2.0 正式发布,其他特性详见:《seekdb 1.2.0 发布:主备容灾上线,实现整库秒级克隆》。
- OceanBase 社区课程《Easy Data x AI》上线社区在线课堂,欢迎大家扫描海报中的二维码,参与课程学习,并加入课程交流群,和我们一起玩耍~
