1. 线性一致性(Linearizability)与可串行化(Serializability)的本质区别是什么?为什么严格可串行化(Strict Serializability)被视为二者的交集?
线性一致性(Linearizability)与可串行化(Serializability)的本质区别是什么?为什么严格可串行化(Strict Serializability)被视为二者的交集?
- 线性一致性的操作语义
- 可串行化的事务语义
- 严格可串行化的交集性质
线性一致性(Linearizability)是单对象(单操作)的一致性模型,要求每个操作在调用与返回之间有一个线性化点,所有操作按该点全局排序,读操作能看到该点之前所有已提交的写,强调“实时顺序”与读到的旧值限制。可串行化(Serializability)是事务(多操作)的隔离语义,要求并发事务的执行结果等价于某个串行顺序,但不保证该顺序与真实时间一致,只要求事务内多操作原子、有序。严格可串行化(Strict Serializability)同时满足二者:事务结果等价于串行执行,且串行顺序与真实时间顺序一致,因此被视为二者的交集——既保证事务串行等价,又保证操作按实时顺序可线性化。
区分二者的关键是“单操作 vs 事务”与“是否尊重实时时间”。线性一致性约束单操作排序,可串行化约束事务等价,严格可串行化把两者结合,是分布式事务与数据库一致性的重要交汇点。