第六章 存储技术与数据库物理设计
6.1 文件组织
6.1.1 数据库的物理结构
1、 数据库中的应用数据是以文件形式存储在外存上的,文件在逻辑上被组织成记录的序列,即每个DB文件可看作是逻辑记录的集合;
2、 一个文件在磁盘上占有一定的物理存储空间,文件中的每个逻辑记录被映射存储到某个特定的磁盘块上,一个文件在物理上可以看作是由存放文件记录的一系列磁盘块组成,称为物理文件;
3、 文件的逻辑记录与磁盘间的映射关系是由操作系统或DBMS来管理的,当需要对一个文件的逻辑记录进行操作时,先要根据这种映射关系找到该逻辑记录所在的磁盘块,然后再进行操作。
4、 从数据库物理结构角度需要解决如下问题:
(1) 文件的组织;
(2) 文件的结构;
(3) 文件的存取;
(4) 索引技术;
6.1.2 文件组织
1、 数据库与文件的对应关系
(1) 在外存中,数据库以文件形式组织,文件由逻辑记录组成,记录由多个域组成;
(2) 一个关系数据库包括一张或多张关系表,关系表与文件的对应关系有如下方式:
(A) 每张关系表单独用一个文件来存储,由DBMS通过OS的文件管理功能来管理;
(B) 现代中大型DBMS是由OS直接分配一块大的磁盘空间,DBMS将该磁盘空间作为数据库磁盘文件直接管理,DB的所有关系表都存储在该文件中;
(1) 关系表在逻辑上由一系列元组组成,元组由多个属性组成,每个元组可以用磁盘文件中的一个逻辑记录来存储,记录包括多个域,对应元组的多个属性;
2、文件记录格式:
(1) 数据库文件通常采用两种逻辑记录格式:定长记录格式和变长记录格式;
6.2 文件结构与存取
6.2.1 堆文件
1、 堆文件也称无序文件,记录随机在存储在文件物理空间是,新插入的记录存储在文件的末尾;
2、 堆文件常常用作存储那些将来使用,但目前不清楚如何使用的记录,为了实现文件记录的有效存取,堆文件经常与附加的存取路径一起使用;
3、 查找操行平均需要搜索(B+1)/2个磁盘块,效率比较低;
4、 插入操作十分简单,先读文件头,找到最末磁盘地址,将最末磁盘块读入内存,将需插入的新记录写入磁盘块的末端,最后将修改过的磁盘块写回磁盘;
5、 删除比较复杂,可以先找到被删除记录所在的磁盘块,读入内存后在内存缓冲区删除记录,最后再写回磁盘;也可以在每个记录的磁盘空间增加一个删除标志位,当需要删除记录时,将标示位置1;
6.2.2 顺序文件
1、 顺序文件按照文件记录在查询码上的取值的大小顺序排列各个记录;
2、 顺序文件的每个记录中有一个指针字段,根据查询码大小用指针将各个记录按序连接起来;
3、 文件建立时,应尽量使记录的物理顺序与查找码的顺序一致,以减少访问磁盘块的次数;
4、 根据查询条件对顺序文件进行查询时,如查询条件定义在查找码上,则使用二分法查找技术快速找到记录,如条件不在查找码上,则必须从头到尾依次扫描磁盘块,与堆文件一致,所以顺序文件的访问效率也不高;
5、 顺序文件插入工作包括定位和插入:
(1) 定位:在指针链中找到插入的位置,即插入记录在哪个记录的前面;
(2) 插入:如有自由空间,则在该位置插入新记录,如没有自由空间,则只能插入溢出块中,重新调整记录指针链关系,保证记录顺序;
6.2.3 聚集文件
1、 聚集文件是一种具有多种记录类型文件,存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型;
2、 当数据库中数据量效大时,对数据库查询需要多次访问磁盘文件,严重影响性能指标,为了降低多表操作时的磁盘访问次数,提高多表查询速度,可采用聚集文件;
3、 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少多表查询时磁盘块的访问次数,提高处理速度;
6.2.4 索引文件
是一种利用索引技术技术快速文件访问的文件组织和存取方法;
6.2.4 散列文件
是一种利用散列函数支持快速文件访问的文件组织和存取方法;
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |