序列化但不可序列化?

Serial but not serializable?

最近我一直在做关于交易的讲座。幻灯片的一张幻灯片让我困惑了很长时间。我一直明白可序列化意味着两个事务可以并行执行并且结果将与它们串行执行的结果相同,对吗?我还阅读了伯克利的串行操作定义,我引用了 “确保隔离的最简单方法是 运行 在开始下一个事务的操作之前完成一个事务的所有操作.这叫做串行调度。所以基于以上,我非常困惑,一个时间表怎么可能是串行的而不是可串行的???我的意思是,这不是在说我是人但我不能成为人吗??

这是幻灯片

而且我已经多次向教授确认,从他的角度来看,这个说法是正确的。

请帮我理解!谢谢!

问题是不可序列化的调度没有可视化。

让我们看看上面描述的交错时间表的结果:

  • (T1) a = a-100 = 100
  • (T2) a = a*1.1 = 110
  • (T1) b = b+100 = 200
  • (T2) b = b*1.1 = 220

以下系列时间表具有相同的结果:

  • (T1) a = a-100 = 100
  • (T1) b = b+100 = 200
  • (T2) a = a*1.1 = 110
  • (T2) b = b*1.1 = 220

因此,交错调度被认为是 可序列化

但是,以下交错调度是不可序列化的:

  • (T1) a = a-100 = 100
  • (T2) a = a*1.1 = 110
  • (T2) b = b*1.1 = 110
  • (T1) b = b+100 = 210