2011-11-20 24 views

回答

16

很难找到关于此主题的信息。但是,在某些时候,我发现一条声明清楚地说明了这一点:

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

(从深入描述found here总结)作为一个例子:

enter image description 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) 
+0

+1,只有将使它更好的答案是引用的东西。 –

+0

@jameslewis谢谢。我已经添加了一篇引用,让我在之前理解了这篇文章。 – Qqwy

相关问题