Skip to content

定义Definition

可串行化

施工中 · 内容逐步修订

Serializability

并发事务历史与某个串行事务次序等价的正确性条件。

形式陈述 ​

先固定事务调度的读取语义以及要比较的观察。调度 S 可串行化,指存在逐个完成事务的串行调度 S′,使二者在指定等价关系下相同。常见视图等价要求保留每个读的来源、初值读取以及每个数据项的最终写者;只要求最终数据库值相同太弱,因为事务可能已返回错误读值。

冲突可串行化采用更严格而易检验的等价关系:不同事务对同一数据项的两个操作,只要至少一个是写,就构成冲突;要求所有冲突对的相对顺序不变。以事务为顶点、按冲突先后连边得到前驱图。单版本读写模型中,调度冲突可串行化当且仅当该图无环,此时任一拓扑序给出冲突等价的串行次序。

该无环判据刻画的是冲突等价这一版本。视图可串行化允许某些改变了冲突次序但未改变读取来源与最终写者的重排。涉及已中止或未完成事务时,还须明确所取投影和恢复语义,不能在遇到反例后任意删除事务。

直觉

可串行化把交错历史投影成事务之间的先后约束:只要存在某个串行次序能产生相同观测效果,并发执行就没有暴露不可解释的中间状态。冲突可串行化用读写冲突构造 precedence graph,环表示事务先后要求自相矛盾。它允许所选串行次序违背现实完成时间,所以与严格可串行化不同。

例子与边界

设初始 x=0,调度为 r1(x)->0; r2(x)->0; w1(x,1); w2(x,1); c1; c2。两个事务都想把读值加一。由 r1 先于 w2 得 T1→T2,由 r2 先于 w1 得 T2→T1,形成环;任一串行执行都应最终得到 2,而该调度得到 1。环直接指出两个事务都试图排在对方之前。

再看 blind write:w1(x,1); w2(x,2); w1(x,3); c2; c1 没有任何读,最终写者为 T1,所以与串行次序 T2,T1 视图等价。但第一次 w1 产生 T1→T2,第二次 w1 又产生 T2→T1,它不冲突可串行化。两种判据的差别不是图算法出错,而是采用的等价关系不同。

可串行化还不自动给出恢复性。例如 w1(x,1); r2(x)->1; c2; a1 的冲突图只有 T1→T2,但读者已提交后写者中止,仍然是不可恢复的调度。串行等价、提交依赖与持久性需要分别证明。严格可串行化另外要求保留不重叠事务的实时先后。

推论与应用

冲突约束无环时,其传递闭包构成严格偏序;拓扑排序把它扩展为串行全序。两阶段锁与时间戳排序可直接约束该图,MVCC则保存多个版本并用可见谓词选择读版本;它是一类实现机制,不是可串行化的同义词。

乐观并发验证提供另一种可逐事件执行的充分机制:事务先在固定快照上计算,在一个原子入口内核对全部外部读依据并发布私有写,成功事务按提交顺序得到串行见证。检查与发布若拆开,两笔旧决定都可能获准;允许盲写按提交序覆盖也不等于采用SI的写写提交规则。

快照隔离让事务读取开始时的一致快照,并以 first-committer-wins 排除并发同项写入,却允许 write skew:两个事务读取对方将覆盖的旧版本、分别写不同数据项时,会形成双向读写反依赖环。完整历史与约束违反由 SI 专页承接,本页保留串行等价与图无环判据。

与线性一致性一样尊重非重叠事务实时顺序的版本称为严格可串行化;原子提交、持久性和可恢复性仍需日志与两阶段提交等独立协议。

参考资料
  • Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman, Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1987,Chs. 2–3, serializability theory and precedence graphs。
  • Jim Gray and Andreas Reuter, Transaction Processing: Concepts and Techniques, Morgan Kaufmann, 1992,Chs. 6–9, transaction histories and serial equivalence。
关系图谱11 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例

类型化关系