数据库 ch 17

Ch 17

1. 说明ACID分别指的是什么,并说明其在数据库系统中的重要性。

A:atomicity,原子性指一个事务的操作要么全部发生,要么全部不发生。

C:consistency,一致性指事务执行前后,数据库的完整性约束未被破坏,数据是合法的。

I:isolation,隔离性指事务虽然可以并发执行,但事务间并不会相互影响。

D:durability,持久性指事务对数据的修改不会因为程序故障,主机断电等因素消失。

2. 哪些存储类别可以用来确保持久性?为什么?

外存,比如闪存,硬盘等,因为它们是非易失性存储器,掉电非易失,所以,即使主机断电事务对数据的修改也不会消失,确保持久性。

3. 解释串行调度和可串行调度的区别。 

串行调度指事务的调度是串行的,不可并发。可串行调度指事务并发调度的结果冲突等价于事务串行调度,事务并发调度对事务的执行结果没有影响。

4. 请给出一个包含两个事务的可串行化调度的示例,使得事务提交的顺序与串行化顺序不同。 

T1

T2

READ(A)

WRITE(A)

READ(A)

WRITE(A)

READ(B)

WRITE(B)

READ(B)

WRITE(B)

5. 考虑以下两个事务:

T13: 

read(A);

read(B);

if A = 0 then B := B + 1;

write(B).

T14: 

read(B);

read(A);

if B = 0 then A := A + 1;

write(A).

现在的一致性要求是 A = 0 ∨ B = 0,初始值为 A = B = 0。

a. 证明涉及这两个事务的每个串行执行都保持数据库的一致性。

b. 设计一个 T13 和 T14 的并发执行,产生一个不可串行化的调度。

c. 是否存在 T13 和 T14 的并发执行产生可串行化的调度?

a. 若先执行事务T13,再执行事务T14,,则执行完事务T13后,A=0,B=1,执行完事务T14后,A=1,B=1;若先执行事务T14,再执行事务T13,,则执行完事务T14后,A=1,B=0,执行完事务T13后,A=1,B=1。

b.  

T13

T14

READ(A)

READ(B)

READ(B)

READ(A)

WRITE(A)

WRITE(B)

由于T14的READ(B)先于T13的WRITE(B),所以T14优先于T13,由于T13的READ(A)先于T14的WRITE(A),所以T13优先于T14,故T13与T14的优先图构成环,故该调度是一个不可串行化的调度。

c.

不存在。反证法:若存在,则T13的WRITE(B)应当晚于T14的READ(B),否则为先执行T13再执行T14的串行调度,故T13优先于T14。同理,T14的WRITE(A)应当晚于T13的READ(A),否则为先执行T14再执行T13的串行调度,故T14优先于T13。所以,T13与T14的优先图构成环,故不存在T13 和 T14 的并发执行产生可串行化的调度

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值