设计审查: publishedSequence 的范围 — 物理 mutation 还是包含 MVCC commit record #18

Closed
opened 2026-06-12 08:28:24 +08:00 by dailz · 0 comments
Owner

来源: docs/design.md §3.2 WAL Oracle 架构审查

问题描述

当前 publishedSequence 基于 WAL Physical Record 的 baseSequence + i,即物理 mutation sequence。设计中已经预见后续 MVCC / SSI 事务需要 TxnCommit 记录,包含独立的 commitSequence

需要明确 publishedSequence 在事务时代的角色:

  1. publishedSequence 继续跟踪物理 mutation sequence(WAL 重放顺序),事务可见性由 commitSequence 控制?
  2. 还是 publishedSequence 升级为事务可见性 high-water mark,跟踪最大的 commitSequence

两种选择的影响

选项 A(物理 sequence):

  • WAL recovery 逻辑不变
  • 事务层需要独立的 committedTxnSequence 跟踪可见性
  • 两个 high-water mark 增加复杂度

选项 B(事务 commit sequence):

  • 普通读统一用 publishedSequence 判断可见性
  • 但 WAL 物理 sequence 和逻辑 commit sequence 的推进顺序需要额外约束
  • Recovery 时需要先解析 TxnCommit 才能确定 commitSequence

需要明确

  • 第一阶段(单 key autocommit)publishedSequence 就是 commit sequence,两者等价
  • 后续 MVCC 引入时,publishedSequence 的语义是否需要变更?是否需要预留设计空间?
来源: docs/design.md §3.2 WAL Oracle 架构审查 ## 问题描述 当前 `publishedSequence` 基于 WAL Physical Record 的 `baseSequence + i`,即物理 mutation sequence。设计中已经预见后续 MVCC / SSI 事务需要 `TxnCommit` 记录,包含独立的 `commitSequence`。 需要明确 `publishedSequence` 在事务时代的角色: 1. `publishedSequence` 继续跟踪物理 mutation sequence(WAL 重放顺序),事务可见性由 `commitSequence` 控制? 2. 还是 `publishedSequence` 升级为事务可见性 high-water mark,跟踪最大的 `commitSequence`? ## 两种选择的影响 **选项 A(物理 sequence):** - WAL recovery 逻辑不变 - 事务层需要独立的 `committedTxnSequence` 跟踪可见性 - 两个 high-water mark 增加复杂度 **选项 B(事务 commit sequence):** - 普通读统一用 `publishedSequence` 判断可见性 - 但 WAL 物理 sequence 和逻辑 commit sequence 的推进顺序需要额外约束 - Recovery 时需要先解析 TxnCommit 才能确定 commitSequence ## 需要明确 - 第一阶段(单 key autocommit)`publishedSequence` 就是 commit sequence,两者等价 - 后续 MVCC 引入时,`publishedSequence` 的语义是否需要变更?是否需要预留设计空间?
dailz added the design-reviewquestionWAL labels 2026-06-12 08:28:24 +08:00
dailz closed this issue 2026-06-12 09:24:22 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/go-kv#18