我对这两种一致性模型感到非常困惑。请给出一些时间线示例以及解释。
http://en.wikipedia.org/wiki/Consistency_model

最佳答案

很难找到有关此主题的信息。但是,在某个时候,我发现有一条声明可以清楚地解释它:

  • Linearizability 在操作级别提供隔离,而 Serializability 在事务级别提供隔离。

  • (从深入描述 found here 总结)

    举个例子:

    这里,A、B 和 C 是同时运行的三个不同的事务。 r(varname) 表示当前事务正在访问 varname 中的值,w(varname) 表示当前事务正在将某个值写入 varname 中。

    现在,为了创建这些事件的线性历史,我们必须确保没有两个操作同时发生。在另一个操作已经开始时已经开始的操作应该出现在第一个操作之后。

    在这种情况下:
    Log1: A.r(x), B.r(X), B.r(Y), A.w(X), C.r(Y)
    

    要创建这些事件的序列化历史,必须将事务 A、B 和 C 的所有操作分开,以便没有与其他事务交错的操作。

    在我们的示例中,这可能导致:
    Log2: A.r(x), A.w(x), B.r(X), B.r(Y), C.r(Y)
    

    关于distributed-computing - 可串行化和可线性化有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8200015/

    10-15 14:18