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)


暂无数据
推荐帖子
0条评论
0条评论
0条评论