【问题标题】:Serial but not serializable?序列化但不可序列化?
【发布时间】:2022-01-18 23:52:55
【问题描述】:

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

所以这是幻灯片

我已经多次与教授确认,从他的角度来看,这种说法是正确的。

请帮我理解!谢谢!

【问题讨论】:

    标签: transactions


    【解决方案1】:

    问题是不可序列化的计划没有可视化。

    让我们看看上面描述的交错调度的结果:

    • (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

    【讨论】:

    • 嗨!感谢您的回答,但是,关键是,日程安排怎么可能是串行的而不是可串行化的?
    • 好吧,我仍然不确定我是否理解您的问题,然后根据定义,时间表不能两者兼而有之;它可以是串行的(事务按顺序执行)或交错的(并行)。如果对于交错调度存在保留结果的串行调度,则该交错调度是可序列化的。
    • 可以澄清的是,你问你的教授哪个时间表是串行的,哪个是(非)可串行化的;幻灯片只显示了一个可序列化的时间表
    猜你喜欢
    • 2011-04-17
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多