sql sever 并发控制思考题

冷雨炽灵2022-10-04 11:39:541条回答

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)写一个遵守两端锁协议的发生死锁的并发调度策略。

已提交,审核后显示!提交回复

共1条回复
亲吻你pp唇 共回答了17个问题 | 采纳率88.2%
当多个用户同时更新同一数据的时候,由于更新可能导致数据的不一致性,使得程序的业务数据发生错误,这种情况可以称之为并发。在ADO .NET中,并发的处理可以通过三种方式来控制:保守式并发控制、开发式并发控制以及最后更新生效方式。
— 保守式并发控制:数据从数据库取出之后,一直处于锁定的状态,其他用户不能获取该数据,直至数据更新完毕之后,用户才能取出该数据进行操作。此种控制方式对于性能和资源占用得很多,由于只能同时有一个用户对数据享用操作权,所以可能会在正常业务中,影响其他用户的处理进程。但此控制方式可以完全保证数据的完整性。该方式可以通过.NET提供的事务机制来实现,前提是数据源需要支持事务。
— 开发式并发控制:数据在更新之前都是可以被其他用户使用的,只有在更新的时候,才锁定记录。但更新的时候,会比对与查询之初的数据是否吻合,如果不一致,则不运行修改。此种控制方式也可以完全保证数据的完整性,其优点是不会占用其他用户访问该数据的权限,其缺点是由于其他用户可能已经更新了这些数据,导致本次更新可能不会完成。对于此种控制方式,多以开发人员通过程序本身的业务逻辑来实现。
— 最后更新生效方式:此种方式同上,只有在数据更新的时候,其他用户才不可使用,但更新的时候不检查是否与开始数据一致,而直接对其更新。此种方式对于更新的并发性有很大的支持,但缺点是可能引发前后数据的不一致。此种方式适合可以满足此需求的业务场景使用。
注意:数据库的并发处理并不是一成不变的,不同的业务场景对数据库的并发要求是不一样的,可以根据具体情况具体分析
1年前

相关推荐

编程问题!!!实验二:关联规则挖掘使用你所熟悉的程序设计语言,如C,C++,JAVA,SQL Sever等,实现Apri
编程问题!!!
实验二:关联规则挖掘
使用你所熟悉的程序设计语言,如c,c++,java,sql sever等,实现apriori频繁项集算法。要求程序具有一定的通用性。使用下面的数据进行验证,同时使用教材p151表5-1的数据进行验证。

说明:已知事务数据库d,假定最小支持度为2,求所有的频繁项集和它们的支持度。
第一步 由数据库d求得候选数据项集c1,项a、b、c、d、e的次数分别为2、3、3、1、3。
第二步:根据最小支持度为2,生成一维数据项集l1。
第三步:为生成l2,通过l1与自己连接产生候选2-项集的集合,记为c2,再由最小支持度得到l2。
第四步:从l2生成c3,首先两个具有相同首项的数据项:{bc}和{be}可以确定下来,在考察{bc}和{be}的尾项生成的数据项集{ce}是否满足最小支持度,结果成立。这样{bce}的所有二***集都是频繁数据项集,所以{bce}是候选数据项集。同时,从l2也得不到其他三维候选数据项。这样c3就确定了,同理求出l3。
到此为止,得不到更高维的数据项集了,即整个频繁数据项集就确定了。
wlf61011年前1
freetalk2721 共回答了12个问题 | 采纳率91.7%
!!!不会