1.索引扫描方法:
全表扫描法效率很低,可以建立索引。如果选择条件中的属性上有索引(例如B+树或Hash索引),通过索引先找到满足条件的元组主码和元组指针,再通过元组指针直接在查询的基本表中找到元组。
2.连接操作很耗时,可以采用嵌套循环的方法
排序-合并的方法,
索引连接方法(对student中每个元组,由sno值通过SC的索引查找到响应的SC元组,把这些SC元组和student元组连接起来)
Hash Join方法:把连接属性作为hash码,用同一个hash函数把R和S的元组散列到同一个hash文件中,第一步:对包含较少元组的表(如R表)进行一遍处理,把它的元组按hash函数分散到hash表的桶中;第二步:连接阶段,对另一个表(S表)进行一遍处理,把S的元组散列到适当的hash桶中,并将元组于桶中所有来自R并与之匹配的元组连接起来。
数据库恢复的实现技术 :
两个关键问题:1.建立冗余数据 2.利用冗余数据实施数据库恢复
建立冗余数据最常用的技术:数据转储、登陆日志文件
数据转储: DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程,以作备份。
转储分为静态转储、动态转储
静态转储:在系统中无运行事务时进行的转储操作,期间不允许对数据库进行存取、修改操作。这会降低数据库的可用性。
动态存储:在转储期间允许对数据库进行存取和修改。不能保证数据存储的数据是最新的,这就需要建立日志文件,能够根据日志文件把数据库恢复到某一时刻的正确状态。
海量转储:每次转储全部数据库
增量转储:每次只转储上一次转出后更新过的数据。
日志文件:用来记录事务对数据库的更新操作的文件,日志文件有两种格式:以记录为单位的日志文件、以数据块为单位的日志文件。
以记录为单位的日志文件,日志文件内容包括:
(1)各个事务的开始标记
(2)各个事务的结束标记
(3)各个事务的所有更新操作
每个日志记录的内容:
(1)事务标识(表明哪个事务)
(2)操作类型(插入、删除、修改)
(3)操作对象(记录内部标识)
(4)更新前数据的旧值(对插入操作而言,此项为空值)
(5)更新后数据的新值(对删除操作而言,此项为空值)
日志文件的作用:
- 用来进行事务故障恢复、系统故障恢复
- 在动态转储方式中建立日志文件。
- 在静态转储方式中,建立日志文件,利用日志文件,对已完成的事务进行重做处理,对故障发生时尚未完成的事务进行撤销处理。
登记日志文件的原则:
(1)登记的次序按照:并发事务执行的时间次序
(2)先写日志文件,再写数据库