知识卡片

线性一致性与可串行化是两个独立维度

普通读书笔记卡

内容

线性一致性和[[可串行化快照隔离靠检测过时前提实现乐观并发控制]]所属的可串行化(事务隔离等级中最强的一档)经常被混淆,但它们回答的是完全不同的问题:可串行化保证多个事务并发执行的结果,等价于按某种串行顺序逐一执行它们的结果——它约束的是”事务之间的相对顺序”,不承诺读到的一定是最新写入。线性一致性保证的是”任何一次读都能看到最新的写”——它约束的是”单个操作相对于实时的新鲜度”,跟事务、多对象操作毫无关系,只针对单个寄存器/对象的操作历史。一个系统可以只满足其中一个而不满足另一个:两阶段锁定实现的可串行化通常也提供线性一致性,但可串行化快照隔离(SSI)为了性能刻意不是线性一致的。同时满足两者的系统被称为严格可串行化或强单副本可串行化(strong-1SR)。发散:讨论”数据库一致性”时先分清楚到底在问哪个维度,能避免大量误解。

参考来源

- 位置:《数据密集型应用系统设计》第九章《一致性与共识》"线性一致性""线性一致性与可串行化的区别"(源文件:_epub-src/ch9_split_000.html) - 结论依据:原文明确区分可串行化(事务层面的串行顺序等价)与线性一致性(单对象操作层面的实时新鲜度),并说明两者可以独立满足或不满足,严格可串行化(strong-1SR)是两者的交集,直接支撑本卡片结论。 - 原始内容:可串行化是事务的隔离属性……而线性一致性是并发数据系统中读写寄存器(单个对象)的新鲜度保证……满足两者的系统被称为严格可串行化或强单副本可串行化。