第9章 作业:
1.简述数据库管理系统查询优化的一般步骤。
答:查询优化的一般步骤如下:
(1)将查询转化为某种内部表示,通常是语法树。
(2)根据一定的等价变换规则把语法树转换成标准形式。
(3)选择低层的操作算法.对于语法树中的每一个操作需要根据存取路径,数据的存储分布,存储数据的聚簇信息来选择具体的执行算法。
(4)生成查询计划,即查询执行方案,是由一系列的内部操作组成的。
2. 简述查询优化在关系数据库中的重要性和可能性。
答:重要性:关系系统的查询优化既是RDBMS实现的关键技术又是关系系统的优点所在,减轻了用户选择存取路径的负担。
可能性:
(1)优化器可以从数据字典中获取许多统计信息,优化器可以根据这些信息选择有效的执行计划,而用户程序难以获得这些信息。
(2)若数据库的的物理统计信息改变了,系统可以自动对查询进行重新优选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。
(3)优化器可以考虑多种执行计划,从中选出较优的,而程序员考虑的只有几种执行计划。
(4)优化其中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握,系统的自动优化相当于使得所有人都拥有这些优化技术。
3. 说明登记日志文件时,为什么必须先写日志文件,后改写数据文件。
答:数据库中的数据文件的修改和把修改日志写到日志文件中是两个不同的操作。先写日志文件的目的是为保证数据库的可恢复性。日志文件能够用来进行系统故障恢复,并能够协助后备副本进行介质故障恢复。
如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次撤销操作,并不会影响数据库的正确性。
当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用建立的日志文件,可以把已完成的事务进行重做处理,对故障发生时尚未完成的事务则进行撤消处理,这样不用运行应用程序就可把数据库恢复到故障前某一时刻的正确状态。
4. 教材p290页第3题--语法树练习
对学生-课程数据库,查询信息系学生选修了的所有课程名称。
SELECT Cname
FROM Student, Course,SC
WHERE Student.Sno= SC.Sno AND SC.Cno = Course. Cno AND Student. Sdept=' IS ;
此查询要求信息系学生选修了所有课程名称。
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
参考答案如下: