作者:非妃是公主
专栏:《数据库》
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
专栏系列文章
第2章
6.
第3章
4.
5.
9.
第6章
5.
6.
7.
第7章
7.
8.
9.
10.
11.
第9章
2、
块数
=
20000
40
=
50
块数 = \frac{20000}{40}=50
块数=4020000=50
(2)对R进行索引扫描 , 块数=3+1 =4;其中前3块为B+树索引块,第4 为块数据块。(前3块装指针,后面一块装相应指针指向的数据)
(3)R总共需要
20000
40
=
500
\frac{20 000}{40}=500
4020000=500次,S总共需要
1200
30
=
40
\frac{1200}{30}=40
301200=40次,以R为外表,假设内存可分配的块数为K块,那么
磁盘块读写次数
=
500
+
⌈
40
k
−
1
⌉
×
500
磁盘块读写次数=500+\lceil\frac{40}{k-1}\rceil\times500
磁盘块读写次数=500+⌈k−140⌉×500
(4)
- R与S在B属性上有序
硬盘读写次数
=
500
+
40
=
540
;
硬盘读写次数=500+40=540;
硬盘读写次数=500+40=540;
- R与S在B属性上无序,还要加上两个关系在B属性上排序的代价(一般排序算法的时间复杂度为(
n
log
2
n
n\log_2{n}
nlog2n),其中,n为排序规模)
硬盘读写次数
=
540
+
2
×
500
×
l
o
g
2
500
+
2
×
40
×
log
2
40
。
硬盘读写次数=540+2\times500\times log_2{500} +2\times40\times\log_2{40}。
硬盘读写次数=540+2×500×log2500+2×40×log240。
3、
4、
(1)对teacher进行全表扫描,查看元组是否满足性别为女。
(2)通过索引找到Dno=301
的索引项 ,然后顺着B+树的顺序集得到Dno< 301
的索引项 ,通过这些指针找到Department中的元组;
(3)对work
进行全表扫描 ,查看元组是否满足year<>2000
。
(4)通过year的索引找到满足Year=2000
的索引项,然后顺着B+数的顺序集得到Year>2000
的索引项,通过这些指针找到Year>2000
的元组,检查这些元组是否满足salary< 5000
。
(5)对Work
进行全表扫描,查看元组是否满足Year<2000
或Salary< 5000
。
5、
第10章
4、
① 重做:T1 、T3;回滚 : T2 、T4。
② 重做:T1,回滚: T2 、 T3。
③ 重做:T1,回滚: T2 、 T3。
④ 重做:T1,回滚:T2。
说明:已经提交的事项要重做,还未提交的事项要回滚,判断重做还是回滚的依据就是事项是否提交。
5、
① 系统故障发生在14之后:A:8; B:7; C:11;
② 系统故障发生在12之后:A:10; B:0; C:11;
③ 系统故障发生在10之后:A:10; B:0; C:11;
④ 系统故障发生在9之后:A:10; B:0; C:11;
⑤ 系统故障发生在7之后:A:10; B:0; C:11;
⑥ 系统故障发生在5之后:A:0; B:0; C:0;
说明:已经提交的事项对数据库的修改才会写入到磁盘上,没有提交的事项所做的更改暂时无效。
第11章
9.
(1)串行执行次序有
T
1
,
T
2
,
T
3
;
T
1
,
T
3
,
T
2
;
T
2
,
T
1
,
T
3
;
T
2
,
T
3
,
T
1
;
T
3
,
T
1
,
T
2
;
T
3
,
T
2
,
T
1
;
T_1,T_2,T_3; T_1,T_3,T_2; T_2,T_1,T_3; T_2,T_3,T_1; T_3,T_1,T_2; T_3,T_2,T_1;
T1,T2,T3;T1,T3,T2;T2,T1,T3;T2,T3,T1;T3,T1,T2;T3,T2,T1;
说明:排列问题
说明:交换过程重没有涉及到对同一数据类型读写操作和写写操作的交换
说明:交换过程中涉及到对同一数据的读写操作或写写操作的交换
10.
是冲突可串行化的调度,交换
r
1
(
A
)
r_1(A)
r1(A)与
w
3
(
B
)
r
2
(
B
)
r
2
(
A
)
w
2
(
B
)
w_3(B)r_2(B)r_2(A)w_2(B)
w3(B)r2(B)r2(A)w2(B)后,得到的事务调度序列是串行的。且期间没有交换对同一数据的读写操作或者写写操作。
11.
那么事务序列重必然存在对同一数据类型的读写,或者写写操作在不同事务间交叉进行,
即:两个事务交替使用同一数据类型—>必须存在一个事务先解锁后加锁的情况
与事务并发处理采用两段锁协议相矛盾。
所以它是不可串化的。
13.
③遵循两阶段封锁(2PL)的调度
⊆
\subseteq
⊆①正确的调度
=
=
=②可串行化的调度
④串行调度
⊆
\subseteq
⊆①正确的词度
说明:可串行化的调度都是正确的调度,二者范围相同
两阶段锁协议是可串行化调度的充分不必要条件(两阶段锁协议包含两部分:可串行化的调度和死锁的调度)
串行调度是指各事务操作没有交叉。
14.
(1)
T 1 T_1 T1 |
T 2 T_2 T2 |
---|---|
SlockA | SlockB |
R(A) | R(B) |
XlockB | XlockA |
R(B) | R(A) |
B=A+B | A=A+B |
W(B) | W(A) |
unlockA | unlockB |
unlockB | unlockA |
(2)会发生死锁,如下调度:
T 1 T_1 T1 |
T 2 T_2 T2 |
---|---|
XlockA | |
R(A) | |
XlockB | |
R(B) | |
waiting… | waiting… |
如果想不发生死锁,只能串行调度(先执行更多操作
T
1
T_1
T1,再执行更多操作
T
2
T_2
T2,或者反之)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/130543.html