【发布时间】:2016-11-29 06:51:03
【问题描述】:
在 DBMS 中,严格的调度总是可序列化的吗?
如果答案是否定的,那么请提供一个不可序列化的严格时间表示例。
【问题讨论】:
标签: database concurrency
在 DBMS 中,严格的调度总是可序列化的吗?
如果答案是否定的,那么请提供一个不可序列化的严格时间表示例。
【问题讨论】:
标签: database concurrency
(对于以下内容,我假设冲突可序列化。)
不,严格的时间表并不总是可序列化的。以下时间表是严格的(在提交之前不读取或覆盖数据项),但不可序列化(有两个冲突对:r_1[x] 和 w_2[x] & w_2[x] 和 w_1[x],但是它们的顺序不同)。下标1的操作属于事务T_1,下标2的属于事务T_2。
r_1[x] w_2[x] c_2 w_1[x] c_1
与上面给出的答案相反,可序列化的时间表不一定严格。请参阅以下示例:
w_1[x] w_2[x] c_2 r_1[y] c_1
事务 T_2 在提交 T_1 之前覆盖了 T_1 的 w_1[x]。然而,调度(冲突)等同于串行调度 T_1 T_2。
【讨论】: