热线电话:13121318867

登录
2018-12-05 阅读量: 1873
怎么理解冲突序列化?

串行调度具有较少的资源利用率和较低的吞吐量。为了改进它,两个更多的事务同时运行。但是事务的并发性可能导致数据库的不一致。为避免这种情况,我们需要检查这些并发计划是否可序列化。

冲突可序列化:如果可以通过交换非冲突操作将计划转换为串行计划,则计划称为冲突可序列化。

冲突操作:如果所有条件满足,则称两个操作冲突:

  • 它们属于不同的交易
  • 它们在相同的数据项上运行
  • 至少其中一个是写操作

示例: -

  • 冲突操作对(R 1(A),W 2(A))因为它们属于同一数据项A上的两个不同事务,其中一个是写操作。
  • 类似地,(W 1(A),W 2(A))和(W 1(A),R 2(A))对也是矛盾的
  • 另一方面,(R 1(A),W 2(B))对是非冲突的,因为它们对不同的数据项进行操作。
  • 类似地,((W 1(A),W 2(B))对是非冲突的。
  • 请考虑以下时间表:

如果Oi和Oj是事务中的两个操作并且Oi<Oj(Oi在Oj之前执行),则同样的顺序也将在时间表中跟随。使用此属性,我们可以获得计划S1的两个事务:

可能的串行调度是:T1-> T2或T2-> T1

- >  在S1中交换非冲突操作 s R 2(A)和R 1(B),时间表变为,

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子