Skip to content

可串行化

Serializability

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

形式陈述

事务调度若与某个逐个完成事务的串行调度具有相同可观察效果,则称可串行化。冲突可串行化采用更易判定的充分且必要刻画:把每个事务作为顶点,若调度中事务 Ti 的某个冲突操作先于 Tj 的操作,则加边 TiTj;调度冲突可串行化当且仅当此前驱图无环,其任一拓扑序给出等价串行顺序。视图可串行化更一般,但定义和判定不同。

直觉

事务可以并发交错,只要最终效果看起来仿佛它们按某个完整顺序依次执行;并发控制无需真的串行,只需保持这种等价。

例子与边界

T1 写 x 后 T2 读 x,产生边 T1T2;若又有另一个对象导致 T2T1,形成环,调度不冲突可串行化。可串行化不自动保证事务按现实时间顺序出现;严格可串行化还要求尊重非重叠事务的实时先后。它也不独自保证可恢复性、无级联回滚或持久性。

推论与应用

两阶段锁、时间戳排序和序列化图测试都以可串行化为核心目标。数据库隔离级别常以允许哪些偏离可串行化的异常来描述。

参考资料
  • 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。