博客
关于我
关系查询处理&优化
阅读量:68 次
发布时间:2019-02-26

本文共 2502 字,大约阅读时间需要 8 分钟。

关系查询处理和查询优化

还有数据库恢复(小声)

本篇文章记录了第19&20次作业


1、假设关系R(A,B)和S(B,C,D)情况如下:

R有20 000个元组,S有1 200个元组,一个块能装40个R的元组,能装30个S的元组,估算下列操作需要多少次磁盘块读写。

(1) R上没有索引,select * from R;

解答:这里是要select*,没有限定条件,就直接全表扫描一遍,需要 20000 40 = 500 \frac{20 000}{40}=500 4020000=500次 。

(2) R中A为主码,A有3层B+树索引,select * from R where A=10;

解答:3层B+树每层的元素肯定不到40。三次查找加上最后一次读写,一共需要4次读写。

(3) 嵌套循环连接R ⋈ \Join S;

解答: c o s t = B r + B r B s / ( K − 1 ) + ( F r s ∗ N r ∗ N s ) / M r s cost=Br+BrBs/(K-1)+(Frs*Nr*Ns)/Mrs cost=Br+BrBs/(K1)+(FrsNrNs)/Mrs,在这里内存缓冲区块数K和存放连接结果的块因子Mrs都不知道,故无解。

注:Br与Bs是R、S分别占用的内存块数,Frs连接选择率。

(4) 排序合并连接R ⋈ \Join S,区分R与S在B属性上已经有序和无序两种情况。

解答:有序: c o s t = B r + B s + ( F r s ∗ N r ∗ N s ) / M r s cost=Br+Bs+(Frs*Nr*Ns)/Mrs cost=Br+Bs+(FrsNrNs)/Mrs,这里Mrs和Frs都不清楚,故无法计算。

无序则需要加上对B个块文件排序的代价: ( 2 ∗ B ) + ( 2 ∗ B ∗ log ⁡ 2 B ) (2*B)+(2*B*\log_2B) (2B)+(2Blog2B),R表有500块,S表40块,分别代入得R排序代价约为11000次,S排序代价约为480次,,总共11480次。


2、对学生-课程数据库,查询信息系学生选修了的所有课程名称。
SELECT Cname	FROM Student,Course,SC	WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Student.Sdept='IS';

试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。

T1


3、对于下面的数据库模式

 Teacher(Tno,Tname,Tage,Tsex);

 Department(Dno,Dname,Tno);
 Work(Tno,Dno,Year,Salary).
 假设Teacher的Tno属性、Department的Dno属性以及Work的Year属性上有B+树索引,说明下列查询语句的一种较优的处理方法。

(1) select * from teacher where Tsex =‘女’;

解答:直接全表扫描。

(2) select * from department where Dno < 301;

解答:全表扫描,这里的条件是"<",且数据小。

(3) select * from work where Year <> 2000;

解答:不等于的话只能全表扫描了,毕竟只有少数的元组不用读取

(4) select * from work where year > 2000 and salary < 5000 ;

解答:利用Year的B+树索引。这里Year>2000,很容易用B+树找到。

(5) select * from work where year < 2000 or salary < 5000 ;

解答:这里使用的是OR,满足子句中一种条件就行了,应该利用全表扫描。


4、对于上题中的数据库模式,有如下的查询:
SELECT Tname	FROM Teacher,Department,Work	WHERE Teacher.Tno=Work.Tno AND Department.Dno=Work.Dno AND Department.Dname='计算机系' AND Salary>5000;

 画出语法树以及用关系代数表示的语法树,并对关系代数语法树进行优化,画出优化后的语法树。

T2


5、考虑下图所示的日志记录:

P1

(1) 如果系统故障发生在14之后,说明哪些事务需要重做,哪些事务需要回滚。

解答:T1和T3都提交了,T4还未提交,T2已回滚。故T1,T3重做,T4回滚。

(2) 如果系统故障发生在10之后,说明哪些事务需要重做,哪些事务需要回滚。

解答:T1重做,T3回滚。

(3) 如果系统故障发生在9之后,说明哪些事务需要重做,哪些事务需要回滚。

解答:T1重做,T2,T3回滚。

(4) 如果系统故障发生在7之后,说明哪些事务需要重做,哪些事务需要回滚。

解答:T1重做,T2回滚。


6、考虑题5所示的日志记录,假设开始时A、B、C的值都是0;

P1

(1) 如果系统故障发生在14之后,写出系统回复后A、B、C的值;

解答:A=8,B=7,C=11.

(2) 如果系统故障发生在12之后,写出系统回复后A、B、C的值;

解答:A=10,B=0,C=11.

(3) 如果系统故障发生在10之后,写出系统回复后A、B、C的值;

解答:A=10,B=0,C=11.

(4) 如果系统故障发生在9之后,写出系统回复后A、B、C的值;

解答:A=10,B=0,C=11.

(5) 如果系统故障发生在7之后,写出系统回复后A、B、C的值;

解答:A=10,B=0,C=11.

(6) 如果系统故障发生在5之后,写出系统回复后A、B、C的值;

解答:A=0,B=0,C=0.

 
 
 
参考文献:
[1]萨师煊,王珊,数据库系统概论.5版.北京:高等教育出版社,2014.

转载地址:http://wkfz.baihongyu.com/

你可能感兴趣的文章
Luogu2973:[USACO10HOL]赶小猪
查看>>
mabatis 中出现&lt; 以及&gt; 代表什么意思?
查看>>
Mac book pro打开docker出现The data couldn’t be read because it is missing
查看>>
MAC M1大数据0-1成神篇-25 hadoop高可用搭建
查看>>
mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
查看>>
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>