Skip to content

视图可串行化

View serializability · View-serializable schedule

以初值读取、读取来源和最终写者保持来定义调度的视图等价,并覆盖部分含盲写的非冲突串行历史。

条目类型
定义

形式陈述

两个包含相同已提交事务与读写操作的 事务调度 S,S 视图等价,若对每个数据项都同时满足:

  1. S 中读取初值的操作,在 S 中也读取初值;
  2. rj(x)S 中读取 wi(x) 产生的值,它在 S 中仍从同一个 wi(x) 读取;
  3. S 中对 x 作最终写的事务,在 S 中仍是最终写者。

S 与某个串行调度视图等价,就称 S 视图可串行化。它因此是 可串行化 的一种具体观察口径:保留每次读看见谁以及最终状态由谁决定,而不要求所有冲突操作都保持原相对次序。

每个 冲突可串行化 调度都视图可串行化,反向却不成立。一般有限调度的视图可串行化判定是 NP-complete;这与冲突图无环的多项式判定形成实质差别。若调度没有盲写——每个写入事务在写前已读相应数据项——视图可串行化但非冲突可串行化的额外空间会消失。

NP 上界的证书是一个事务全序:按该顺序排成串行调度后,可在多项式时间内核对每个读来源、初值读取和最终写者。困难在于从交错操作中找到这个顺序,而不是验证一个已经给出的见证。NP-complete 结论针对一般输入,并不说每个实际调度都难判。

直觉

视图等价像比较两次演出中观众真正看见的接力关系。每位读者拿到的是哪位写者交出的值,开场前的初值由谁读到,落幕时最后一笔是谁写下,这三类观察相同即可。后台两次没人读取的写入先后可能变化,而不影响这份视图。

这种宽容带来计算代价。冲突图把每个可能改变语义的操作对都固定成边,容易检查但有时过于保守;视图判定要猜一个串行顺序,再核对读来源与最终写者,盲写使许多候选无法由局部边直接排除。

三项条件各守一扇门:initial-read 防止把本应读数据库初态的操作放到某个写者之后;reads-from 固定事务之间的数据依赖;final-write 固定外部最终能看见谁的版本。删除任一项都能构造错误的“等价”顺序。

例子与边界

事务 T1x 连续执行两次盲写,T2 执行一次盲写。考虑操作序列

text
w1(x,1); w2(x,2); w1(x,3)

冲突图既有 T1T2,也有 T2T1,所以它不冲突可串行化。然而序列没有读操作,最终写者是 T1;串行次序 T2,T1 同样以 T1 的第二次写结束。因此两者的初值读取、reads-from 与最终写者全部相同,原调度视图可串行化。

若在 w2(x,2) 后加入 r3(x)2,串行见证还必须把 T3 安排在能从 T2 读取的位置;只比较最终值 3 已不够。反过来,两个不同写者碰巧都写数值 0,也不能因为字节相同就把 reads-from 来源混为一谈。

这里讨论的是逻辑读写。触发器、谓词查询和多版本读取会改变“同一个写”的身份;必须先正规化事件与版本。提交失败的事务是否保留在视图中也要预先约定,通常对已提交投影判断串行性,再由恢复条件处理中止效果。

“最终数据库相同”远弱于视图等价。若 T2 根据读值向外返回审批结果,即使后续盲写把数据库恢复成相同字节,客户端已经观察到的 reads-from 仍不同。最终状态测试无法覆盖事务返回值和控制分支。

推论与应用

视图可串行化给出比冲突判据更宽的正确历史集合,却很少直接作为在线调度器的完整判定目标。系统更常采用锁、时间戳或验证协议生成易证的子类,因为在每次提交处解决一般 NP-complete 搜索并不现实。

盲写密集的批量装载或覆盖更新最能暴露两种定义的差别。审计器若只报告冲突环,应把结论写成“不是冲突可串行化”,不能直接升级为“没有任何串行视图”;若要作后一判断,必须给出三项视图条件或一个不可能性证明。

工程系统常用冲突可串行化作为可执行保证,再把视图理论用于解释这份保证为何保守。若要利用更宽集合提升并发,协议必须维护足以证明读来源和最终写者的状态;“某次测试结果一样”不是可复用的调度规则。

参考资料
  • Christos H. Papadimitriou, “The Serializability of Concurrent Database Updates,” Journal of the ACM 26(4), 1979, pp. 631–653。
  • Philip A. Bernstein, Vassos Hadzilacos, and Nathan Goodman, Concurrency Control and Recovery in Database Systems, Addison-Wesley, 1987, Ch. 2。
  • Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom, Database Systems: The Complete Book, 2nd ed., Pearson, 2008, Ch. 18。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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