数据库的存储结构Word文档格式.docx
《数据库的存储结构Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库的存储结构Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
●磁盘(软盘)
容量低(一般有几M,优盘多到一两百M),价格中,速度较慢,数据不易丢失(除非物理性损坏)。
一般数据库不使用磁盘。
●磁带
容量低(但可在线更换,海量),价格低,速度最慢,且要按顺序存取,数据不易丢失(除非物理性损坏)。
按速度从高到低:
内存、硬盘、USB盘(移动硬盘和优盘)、光盘、软盘、磁带。
按在线容量从大到小:
硬盘、移动硬盘、内存、光盘、磁带、优盘、软盘。
物理块:
512byte/1K/2K/4K/8K
原因:
(1)减少I/O的次数;
(2)减少间隙的数目,提高硬盘空间的利用率。
ORACLE逻辑块与物理块(init.ora中db_block_size定义逻辑块大小)
缓冲块和缓冲区(即SGA中的DataBufferCache)
延迟写(delayedwrite)技术/预取(Prefetching)技术(ORACLE中由DBWR进程完成数据的读写)
5.2记录的存储结构
5.2.1记录的物理表示
1.PositionalTechnique
2.RelationalTechnique
3.CountingTechnique
5.2.2记录在物理块上的分配
不跨块组织(unspannedorganization)
跨块组织(spannedorganization)
5.2.3物理块在磁盘上的分配
1.连续分配法(continuousallocation)
2.链接分配法(linkedallocation)
3.簇集分配法(ClusteredAllocation)
4.索引分配法(IndexedAllocation)
5.2.4数据压缩技术
1.消零或空格符法(nullsuppression)
如:
#5表示5个空格,@6表示6个零等。
2.串型代替法(patternsubstitution)
3.索引法(indexing)
5.3文件结构和存取路径
5.3.1访问文件的方式
1.查询文件的全部或相当多的记录
2.查询某一特定记录
3.查询某些记录
4.范围查询
5.记录的更新
5.3.2数据库对文件的要求
5.3.3文件的基本类型
1.堆文件(heapfile)
方便(快):
插入
不方便(慢):
查找、删除
2.直接文件(directfile)
按散列键访问
其它访问方式
3.索引文件(indexedfile)
按索引键访问
其它访问方式,特别是更新时要进行索引维护。
●索引项=<
索引键,地址>
●primaryindexandsecondaryindex
●nondenseindexanddenseindex
●预查找功能
设要查询年龄为20岁或2l岁的四年级学生,如果学生文件在年龄和年级属性上建有索引,则可查出年龄为20岁的学生记录的集合S20,年龄为2l岁的学生记录的集合S21,四年级学生记录的集合Ss,于是,所需的学生记录的集合S应为:
S=(S20∪S21)∩Ss
●clusteringindex
●Btreeindex
动态平衡多叉(分)树
有B+树、B*树等,数据库管理系统中常用B+树实现索引。
B+树结构:
B+树动态平衡特性:
(1)每个结点最多有2k个键值;
(2)根结点至少有—个键值,其他结点至少有k个键值;
(3)除叶结点(即顺序集结点)无子女外,对于其他结点,若有J个键值,则有J+1个子女;
(4)所有叶结点都处于树的同一级上,即树始终保持平衡。
k值一般根据块的大小确定,使得B+树的结点最大不超过一个块,即一个结点占一个块(block)。
优点:
所有记录都具有相同的访问I/O次数(即树的高度+记录本身访问的I/O次数),(若k=20,树的高度为11,则至少可表示2010=1024X1010个记录)。
缺点:
索引维护需要代价,当记录更新引起索引变化时,最差的情况可能从底层一直影响到根结点,即整个树的变动。
第六章
查询处理和优化
6.1Introduction
1.代数优化
2.物理优化
3.规则优化
4.代价估算优化
6.2代数优化
例1设有S(供应商),P(零件),SP(供应关系)三个关系,关系模式如下:
S(SNUM,SNAME,CITY)
P(PNUM,PNAME,WEIGHT,SIZE)
SP(SNUM,PNUM,DEPT,QUAN)
设有查询Q:
SELECTSNAME
FROMS,P,SP
WHERES.SNUM=SP.SNUM
ANDSP.PNUM=P.PNUM
ANDS.CITY=‘NANJING’
ANDP.PNAME=‘BOLT’
ANDSP.QUAN>
10000;
代数优化的大致过程:
1.以SELECT子句对应投影操作,以FROM子句对应笛卡儿乘积,以WHERE子句对应选择操作,生成原始查询树。
2.应用变换原则
(2)、(6)、(7)、(9),尽可能将选择条件移向树叶方向。
3.应用连接、笛卡儿乘积的结合律,按照小关系先做的原则,重新安排连接(笛卡儿乘积)的次序。
4.如果笛卡儿乘积后还须按连接条件进行选择操作,可将两者组合成连接操作。
5.对每个叶结点添加必要的投影操作,以消除对查询无用的属性。
6.3依赖于存取路径的规则优化
6.3.1选择操作的实现和优化
1.相关因素
●选择条件
●可用的存取路径
●选取的元组数在整个关系中所占的比例有关
2.实现方法
(1)对于小关系,不必考虑其他存取路径,直接用顺序扫描。
例如对于六个物理块大小的关系,如果顺序搜索,则平均的I/O次数为3,不值得采用其他存取路径。
(2)如果无索引或散列等存取路径可用,或估计中选的元组数在关系中占有较大的比例(例如大于20%)且有关属性上无族集索引,则用顺序扫描。
(3)对于主键的等值条件,最多只有一个元组可以满足此条件,应优先采用主键上的索引或散列。
(4)对于非主键的等值条件,要估计中选的元组数在关系中所占的比例。
如果比例较小(例如小于20%),可以用无序索引,否则只能用簇集索引或顺序扫描。
(5)对于范围条件,一般先通过索引找到范围的边界,再通过索引的顺序集沿相应方向按索,例如对于条件Sage>20,可先找到Sage=20的顺序集结点,再沿顺序集向右搜索。
若中选的元组数在关系中所占比例较大,且无有关属性的簇集索引,则宜采用顺序扫描。
例如对于条件Sage>15,因为大学生绝大部分是大于15岁的。
(6)对于用AND连接的合取选择条件。
若有相应的多属性索引,则优先采用多属性索引。
否则,可检查诸合取条件中有无多个可用二次索引的,若有,则用预查找法处理。
即通过二次索引找出满足各合取条件的tid集合,再求这些tid集合的交集。
然后取出交集中tid所对应的元组.并在取这些元组的同时,用合取条件中的其余条件检查。
凡能满足所有其余条件的元组,即为所选择的元组。
如果上述途径都不可行,但合取条件中有个别条件具有规则(3)、(4)、(5)中所述的存取路径,则可用此存取路径选择满足此条件的元组,再将这些元组用合取条件中的其他条件筛选。
若在诸合取的条件中,没有一个具有合适的存取路径.那只有用顺序扫描。
(7)对于用OR连接的析取选择条件,尚无好的优化方法,只能按其中各个条件分别选出一个元组集,再求这些元组集的并。
众所周知,并是开销大的操作,而且在OR连接的诸条件中,只要有一个条件无合适的存取路径,就不得不采用顺序扫描来处理这种查询。
因此,在查询语句中,应尽量避免采用析取选择条件。
(8)有些选择操作只要访问索引就可得到结果,例如查询索引属性的最大值、最小值、平均值等。
在此情况下,应优先利用索引、避免访问数据。
6.3.2连接操作的实现和优化
1.嵌套循环(nestedloop)法
RR.A=S.BS
外关系(outerrelation)
内关系(innerrelation)
2.利用索引或散列寻找匹配元组法
3.排序归并(sort-merge)法
下面是选用连接方法的启发式规则。
(1)如果两个关系都已按连接属性排序,则优先用排序归并法。
如果两个关系中已有一个关系按连接属性排序,另一个关系很小,也可考虑对此未排序的关系按连接属性排序,再用排序归并法连接。
(2)如果两个关系中有一个关系在连接属性上有索引(特别是簇集索引)或散列,则可令另一关系为外关系,顺序扫描,并利用内关系上的索引或散列寻找其匹配元组,以代替多遍扫描。
(3)如果应用上述两规则的条件都不具备,且两个关系都比较小,可以应用嵌套循环法。
(4)如果
(1)、
(2)、(3)规则都不适用,可用散列连接法。
6.3.3投影操作的实现
6.3.4集合操作的实现
6.3.5组合操作