早教吧 育儿知识 作业答案 考试题库 百科 知识分享

sqlsever并发控制思考题1.设T1、T2、T3是如下的三个事务:T1:A=A+3T2:A=A*2T3:A=A^2(A的平方)设A的初值为0:(1)若这三个事务允许并发执行,则有多少种可能的正确调度结果,请一一列举出来;(2)写

题目详情
sql sever 并发控制思考题
1.设T1、T2、T3是如下的三个事务:
T1:A=A+3
T2:A=A*2
T3:A=A^2(A的平方)
设A的初值为0:
(1)若这三个事务允许并发执行,则有多少种可能的正确调度结果,请一一列举出来;
(2)写出一个可串行化的并发调度和结果;
(3)写出一个非可串行化的并发调度和结果;
(4)若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度;
(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。
2.考虑下列两个事务:
T1:READ(A) T2:READ(B)
READ(B) READ(A)
IF A=0 THEN B:=B+1 IF B=0 THEN A:=A+1;
WRITE(B) WRITE(A)
设数据库的一致性要求是A=0 or B=0,A、B的初值为0。
(1)写出这两个事务的所有串行操作及其执行结果;
(2)写一个遵守两段锁协议的且不发生死锁的并发调度策略;
(3)写一个遵守两端锁协议的发生死锁的并发调度策略。
▼优质解答
答案和解析
当多个用户同时更新同一数据的时候,由于更新可能导致数据的不一致性,使得程序的业务数据发生错误,这种情况可以称之为并发。在ADO .NET中,并发的处理可以通过三种方式来控制:保守式并发控制、开发式并发控制以及最后更新生效方式。
— 保守式并发控制:数据从数据库取出之后,一直处于锁定的状态,其他用户不能获取该数据,直至数据更新完毕之后,用户才能取出该数据进行操作。此种控制方式对于性能和资源占用得很多,由于只能同时有一个用户对数据享用操作权,所以可能会在正常业务中,影响其他用户的处理进程。但此控制方式可以完全保证数据的完整性。该方式可以通过.NET提供的事务机制来实现,前提是数据源需要支持事务。
— 开发式并发控制:数据在更新之前都是可以被其他用户使用的,只有在更新的时候,才锁定记录。但更新的时候,会比对与查询之初的数据是否吻合,如果不一致,则不运行修改。此种控制方式也可以完全保证数据的完整性,其优点是不会占用其他用户访问该数据的权限,其缺点是由于其他用户可能已经更新了这些数据,导致本次更新可能不会完成。对于此种控制方式,多以开发人员通过程序本身的业务逻辑来实现。
— 最后更新生效方式:此种方式同上,只有在数据更新的时候,其他用户才不可使用,但更新的时候不检查是否与开始数据一致,而直接对其更新。此种方式对于更新的并发性有很大的支持,但缺点是可能引发前后数据的不一致。此种方式适合可以满足此需求的业务场景使用。
注意:数据库的并发处理并不是一成不变的,不同的业务场景对数据库的并发要求是不一样的,可以根据具体情况具体分析