事务的属性--可串行化(Serializability)

可串行化Serializability

Serializability of a schedule means equivalence (in the outcome, the database state, data values) to a serial schedule (i.e., sequential with no transaction overlap in time) with the same transactions. It is the major criterion for the correctness of concurrent transactions' schedule, and thus supported in all general purpose database systems

可串行化是一个调度,即多个事务之间的执行方式;而多个事务之间的执行有个先后顺序,如果事务之间没有共同的操作对象(读或写操作),则事务之间的执行顺序前后置换是没有关系的;但是如果事物间存在共同的操作对象,则事务间先后执行的顺序则需要区分;对于存在共同操作对象的多个并发执行的事务,如果其执行结果“等价”于某个“串行化调度”,则这个调度才是“可串行化的调度”。满足“可串行化的调度”则具有了可串行化Serializability属性。所以,可串行化Serializability属性保证的是多个事务并发时的执行顺序要对数据的一致性没有影响

如图1-8,三个并发的事务,之间满足串行化调度serial schedule,即事务之间没有操作相同的数据(分别操作了不同的数据XYZ),而可串行化调度的执行结果,调度结果等价于串行化调度,但需要引入几个概念来保证等价效果,这几个概念就是:冲突行为(Conflicting actions)、冲突等价(Conflict equivalence)、冲突可串行化(Conflict-serializabl)。

1-8串行化调度示例

T1

T2

T1

R(X)

 

 

 

R(Y)

 

 

 

R(Z)

W(X)

 

 

 

W(Y)

 

 

 

W(Z)

Commit

Commit

Commit

 

下面我们来讨论冲突行为、冲突等价、冲突可串行化。

冲突行为(Conflicting actions:又称为冲突动作,当有两个动作满足如下三个条件,则这两个动作是冲突的:

此两个动作属于不同的事务;

至少一个动作是写操作;

动作在操作同一个对象(读同一个对象或写同一个对象)。

冲突等价(Conflict equivalence):对于不同的事务调度方式S1S2,如果满足如下两个条件,则事务调度方式S1S2是等价的:

S1S2调度方式包括同样的事务集合(每一个事务中的操作的顺序是固定的,不能在不同的调度方式下发生变化);

S1S2调度方式包括同样的冲突操作集合。

冲突可串行化(Conflict serializabl:当某个调度是一个“冲突等价”于一个或多个“串行调度”,则这个调度是“冲突可串行化”的。这相当于把并发事务等价于了某“多个事务的串行执行”,用显而易见的串行的结果必然满足一致性(数据的一致性)来表示并发事务的调度带来的结果也满足一致性(所以事务可以因此而并发地被执行以提高执行效率)。如表1-9,并发的调度方式中包括事务T1T2在同时执行,这个调度方式“冲突等价”于串行执行的“<T1,T2>”而不等价于“<T2,T1>”,尽管只有一个“冲突等价”的串行执行,这个调度也是“冲突可串行化”的。

1-9冲突可串行化调度示例

T1

T2

R(X)

 

 

R(X)

W(Y)

 

Commit

 

 

W(X)

 

Commit

 

    所以,可串行化概念的作用在于保证并发的事务调度方式即能满足数据一致性需求,又能提高并发事务的执行效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值