设数据库中初始值为 A=3、B=2,有事务 T1、T2 分别如下: T1: A=B+5;A=A*2; T2:B=A*3。请完成下列两小题(两小题共 10 分)) (1)若允许两个事务并发执行,请写出所有可能的正确结果。 (2)若有 S 锁和 X 锁,且两事务均遵守两阶段锁协议,用表格形式写出两个事务交错并发执行 的一个调度序列。
时间: 2023-03-14 08:22:35 浏览: 206
(1)可能的正确结果有:A=10,B=6;A=6,B=18;A=12,B=12。
(2)调度序列如下:
事务 | 锁定 | 操作 | 解锁
T1 | S(A) | A=B*5;A=A*2 | X(A)
T2 | S(B) | B=A*3 | X(B)
相关问题
假设a初始值为100,则有3个事务: T1: a=a+100 T2: a=a-5 T3: a=a+50 这3个事务并发执行,可能的结果有哪些?哪些是满足数据一致性的?为什么?
这三个事务的并发执行可能产生以下结果:
1. T1 -> T2 -> T3: a = 100 + 100 - 5 + 50 = 245
2. T1 -> T3 -> T2: a = 100 + 100 + 50 - 5 = 245
3. T2 -> T1 -> T3: a = 100 - 5 + 100 + 50 = 245
4. T2 -> T3 -> T1: a = 100 - 5 + 50 + 100 = 245
5. T3 -> T1 -> T2: a = 100 + 50 + 100 - 5 = 245
6. T3 -> T2 -> T1: a = 100 + 50 - 5 + 100 = 245
在这些结果中,只有一个结果满足数据一致性,即a的值为245。这是因为在这个结果中,事务的执行顺序保持了原始的操作顺序,保证了数据的一致性。其他的结果由于事务执行顺序的不同,导致了最终结果不一致。
事务的一致性要求事务的执行结果与按照事务顺序串行执行得到的结果相同。在这个例子中,只有T1,T2和T3按照顺序串行执行,才能得到正确的结果。如果事务并发执行时,不遵循原始的操作顺序,就可能导致数据不一致的结果。
有如下3个事务t1、t2、t3,各自包含的操作如下: t1: a=a+9 t2: a=a*16 t3: a=a*8+23 假设a的初值为2,若这三个事务串行执行,可能的调度策略有几种?a最终的结果分别是多少?
若将a初始值设为2,则对于这三个任务的操作如下:
t1:a=a+9,a=2+9=11
t2:a=a*16,a=11*16=176
t3:a=a*8+23,a=176*8+23=1415
经过这三个任务操作后,a的最终值为1415,可能的调度策略有多种,取决于具体情况。
阅读全文