第六章 存储技术与数据库物理设计
4 t3 K) K; B3 O6.1 文件组织
& E, n$ J4 z" y& Z; ^6.1.1 数据库的物理结构
: k5 J0 M# O0 H. K1、 数据库中的应用数据是以文件形式存储在外存上的,文件在逻辑上被组织成记录的序列,即每个DB文件可看作是逻辑记录的集合;4 s+ ?7 o# W' G/ K
2、 一个文件在磁盘上占有一定的物理存储空间,文件中的每个逻辑记录被映射存储到某个特定的磁盘块上,一个文件在物理上可以看作是由存放文件记录的一系列磁盘块组成,称为物理文件;
r9 _; }# |0 s1 W' J5 q8 \3、 文件的逻辑记录与磁盘间的映射关系是由操作系统或DBMS来管理的,当需要对一个文件的逻辑记录进行操作时,先要根据这种映射关系找到该逻辑记录所在的磁盘块,然后再进行操作。" A- A( s+ R6 S' J1 m
4、 从数据库物理结构角度需要解决如下问题:
0 @" {; \9 t2 `, ~2 _* ?(1) 文件的组织;
! {7 [* i( s$ T& Y(2) 文件的结构;' X1 I( { F/ G
(3) 文件的存取;& w: v% I6 a( C+ a$ A1 H6 j7 X
(4) 索引技术;
& U$ G' {8 ^' P; M6 E6.1.2 文件组织
z g' m+ r% z8 Z1、 数据库与文件的对应关系
4 R$ p& ^! |( i+ y(1) 在外存中,数据库以文件形式组织,文件由逻辑记录组成,记录由多个域组成;
4 W; D1 V$ r4 |% U7 |(2) 一个关系数据库包括一张或多张关系表,关系表与文件的对应关系有如下方式:' p0 J: E: q3 {' J; `8 a8 x
(A) 每张关系表单独用一个文件来存储,由DBMS通过OS的文件管理功能来管理;, T$ }, h- i5 s5 @& K {" O5 z
(B) 现代中大型DBMS是由OS直接分配一块大的磁盘空间,DBMS将该磁盘空间作为数据库磁盘文件直接管理,DB的所有关系表都存储在该文件中;
& A5 J- ^1 k, x8 x' T- m(1) 关系表在逻辑上由一系列元组组成,元组由多个属性组成,每个元组可以用磁盘文件中的一个逻辑记录来存储,记录包括多个域,对应元组的多个属性;8 o* u- I! @: t4 |
2、文件记录格式:4 X) P; H* h3 H
(1) 数据库文件通常采用两种逻辑记录格式:定长记录格式和变长记录格式;
6 r, n% ]! G2 ^( a, x' }+ _; x6.2 文件结构与存取- A$ `1 A) h5 c( b0 h3 b1 F" \
6.2.1 堆文件7 F* P: d1 M7 F2 b2 X
1、 堆文件也称无序文件,记录随机在存储在文件物理空间是,新插入的记录存储在文件的末尾;' ?$ u4 R6 L. | y# K S+ w! ^8 b
2、 堆文件常常用作存储那些将来使用,但目前不清楚如何使用的记录,为了实现文件记录的有效存取,堆文件经常与附加的存取路径一起使用;$ |8 ]1 A8 c, d) U
3、 查找操行平均需要搜索(B+1)/2个磁盘块,效率比较低;4 `: k$ m+ j0 J8 k3 \& z
4、 插入操作十分简单,先读文件头,找到最末磁盘地址,将最末磁盘块读入内存,将需插入的新记录写入磁盘块的末端,最后将修改过的磁盘块写回磁盘;! v5 R! ?# M8 r. r3 e2 P5 p
5、 删除比较复杂,可以先找到被删除记录所在的磁盘块,读入内存后在内存缓冲区删除记录,最后再写回磁盘;也可以在每个记录的磁盘空间增加一个删除标志位,当需要删除记录时,将标示位置1;6 U9 K) m* \. N' G% F8 L7 e$ a: R) O
6.2.2 顺序文件3 t+ E0 }/ X: p2 k/ r, V
1、 顺序文件按照文件记录在查询码上的取值的大小顺序排列各个记录;
; J* W! R) e& F, [0 X3 q2、 顺序文件的每个记录中有一个指针字段,根据查询码大小用指针将各个记录按序连接起来;
% e2 s8 y; k6 Q* t3、 文件建立时,应尽量使记录的物理顺序与查找码的顺序一致,以减少访问磁盘块的次数;
% P4 T1 M2 H9 q9 i2 z# v4、 根据查询条件对顺序文件进行查询时,如查询条件定义在查找码上,则使用二分法查找技术快速找到记录,如条件不在查找码上,则必须从头到尾依次扫描磁盘块,与堆文件一致,所以顺序文件的访问效率也不高;
* r% k% E; Z2 Y# K5、 顺序文件插入工作包括定位和插入:8 C$ ]6 l# A( z$ J5 P- l8 C6 D
(1) 定位:在指针链中找到插入的位置,即插入记录在哪个记录的前面;! q! |% x( \$ U8 M+ X, o# ?
(2) 插入:如有自由空间,则在该位置插入新记录,如没有自由空间,则只能插入溢出块中,重新调整记录指针链关系,保证记录顺序;
3 {4 z3 A/ Q _6.2.3 聚集文件
) @% z; g! N! J1、 聚集文件是一种具有多种记录类型文件,存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型;( o' E) |5 u! o
2、 当数据库中数据量效大时,对数据库查询需要多次访问磁盘文件,严重影响性能指标,为了降低多表操作时的磁盘访问次数,提高多表查询速度,可采用聚集文件;7 z1 w3 _, l1 [1 A9 K& A5 P
3、 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少多表查询时磁盘块的访问次数,提高处理速度;* F, e( ?! A) M6 F6 o: I" e' f" @8 ?
6.2.4 索引文件! W+ P8 f' t6 x0 `" ~' N. T
是一种利用索引技术技术快速文件访问的文件组织和存取方法;
0 X/ h! n: w9 } o" r+ n6.2.4 散列文件; K. I# {6 v/ ~0 y! V) p
是一种利用散列函数支持快速文件访问的文件组织和存取方法; |