GATE 2012 考试中提出了以下问题。
1) 考虑以下数据项 P 和 Q 初始化为零的事务:
T1: read (P) ;
read (Q) ;
if P = 0 then Q : = Q + 1 ;
write (Q) ;
T2: read (Q) ;
read (P) ;
if Q = 0 then P : = P + 1 ;
write (P) ;
用于并发执行的 T1 和 T2 的任何非串行交错都会导致
(A) 一个可序列化的时间表
(B) 不可冲突序列化的调度
(C) 冲突可序列化调度
(D) 无法绘制优先级图的时间表
答案 (B)
如果出现以下情况,则称两个或多个动作发生冲突:
1)动作属于不同的事务。
2) 至少其中一个动作是写操作。
3) 动作访问同一个对象(读或写)。
如果满足以下条件,则称调度 S1 和 S2 是冲突等效的:
1) 调度 S1 和 S2 都涉及同一组事务(包括每个事务内的操作顺序)。
2)S1和S2中每对冲突动作的顺序相同。
当调度与一个或多个串行调度冲突等效时,该调度被称为是冲突可串行化的。
资料来源:时间表的维基页面
在给定的场景中,有两种可能的串行调度:
1) T1 然后是 T2
2) T2 之后是 T1。
在两个串行调度中,其中一个事务读取另一个事务写入的值作为第一步。因此,T1 和 T2 的任何非串行交错都不会发生冲突串行化。
2) 考虑以下关系A、B、C。以下关系代数表达式的结果包含多少个元组?假设 AUB 的模式与 A 的模式相同。
Table A
Id Name Age
----------------
12 Arun 60
15 Shreya 24
99 Rohit 11
Table B
Id Name Age
----------------
15 Shreya 24
25 Hari 40
98 Rohit 20
99 Rohit 11
Table C
Id Phone Area
-----------------
10 2200 02
99 2100 01
(一) 7
(乙) 4
(三) 5
(四) 9
答案 (A)
Result of AUB will be following table
Id Name Age
----------------
12 Arun 60
15 Shreya 24
99 Rohit 11
25 Hari 40
98 Rohit 20
The result of given relational algebra expression will be
Id Name Age Id Phone Area
---------------------------------
12 Arun 60 10 2200 02
15 Shreya 24 10 2200 02
99 Rohit 11 10 2200 02
25 Hari 40 10 2200 02
98 Rohit 20 10 2200 02
99 Rohit 11 99 2100 01
98 Rohit 20 99 2100 01
3)考虑上面的表A、B和C。下面SQL查询的结果包含多少个元组?
SELECT A.id
FROM A
WHERE A.age > ALL (SELECT B.age
FROM B
WHERE B. name = "arun")
(一) 4
(乙) 3
(C) 0
(四) 1
答案 (B)
“ALL”的意思是A.Age应该大于子查询返回的所有值。表 B 中没有名为“arun”的条目。因此子查询将返回 NULL。如果子查询返回 NULL,则 A 的所有行的条件都为真(有关详细信息,请参见此处)。所以表A的所有行都被选中。
请参阅 GATE Corner 了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。