第六章 存储技术与数据库物理设计 6.1 文件组织7 Q* b: g# [+ K/ t5 |3 \4 U
6.1.1 数据库的物理结构+ L; s: @' b4 y7 q
1、 数据库中的应用数据是以文件形式存储在外存上的,文件在逻辑上被组织成记录的序列,即每个DB文件可看作是逻辑记录的集合;4 X6 E4 R7 y) C
2、 一个文件在磁盘上占有一定的物理存储空间,文件中的每个逻辑记录被映射存储到某个特定的磁盘块上,一个文件在物理上可以看作是由存放文件记录的一系列磁盘块组成,称为物理文件;5 L/ T" o) B9 I/ ?
3、 文件的逻辑记录与磁盘间的映射关系是由操作系统或DBMS来管理的,当需要对一个文件的逻辑记录进行操作时,先要根据这种映射关系找到该逻辑记录所在的磁盘块,然后再进行操作。
A W8 ?4 r( x, e4 H. H 4、 从数据库物理结构角度需要解决如下问题:; B4 @* v6 J& ^# v
(1) 文件的组织;8 w6 k0 X( E5 L, ?, H9 d
(2) 文件的结构;
1 ?: S* q, \/ _& W5 }+ f# @ (3) 文件的存取;. i: g7 ?6 u9 ]5 M$ s$ _
(4) 索引技术;
! Q# V; n, X1 s: k 6.1.2 文件组织1 z5 a0 E: u! Z% X1 ]& [1 c4 H) b
1、 数据库与文件的对应关系
" A* |7 T# I* g2 l& ~/ e* k) X$ T (1) 在外存中,数据库以文件形式组织,文件由逻辑记录组成,记录由多个域组成;, h% A# n9 B5 M G- d. U+ p1 H
(2) 一个关系数据库包括一张或多张关系表,关系表与文件的对应关系有如下方式:; m; b9 s1 J, }6 Q
(A) 每张关系表单独用一个文件来存储,由DBMS通过OS的文件管理功能来管理;) e) L# X; }2 V% }. n8 s: e
(B) 现代中大型DBMS是由OS直接分配一块大的磁盘空间,DBMS将该磁盘空间作为数据库磁盘文件直接管理,DB的所有关系表都存储在该文件中;
( y- N0 V# `, ^" |& a9 Z6 t& G (1) 关系表在逻辑上由一系列元组组成,元组由多个属性组成,每个元组可以用磁盘文件中的一个逻辑记录来存储,记录包括多个域,对应元组的多个属性;
, H3 U7 M4 e9 _) H' w2 {8 n& W 2、文件记录格式:5 U9 _3 a; q, i% U2 F. E
(1) 数据库文件通常采用两种逻辑记录格式:定长记录格式和变长记录格式;
5 n) N* c$ W! K( F' Q: D- P 6.2 文件结构与存取! h: O& Q# r, {
6.2.1 堆文件8 w) P. J7 G; |' @8 u' A1 y$ N- ~
1、 堆文件也称无序文件,记录随机在存储在文件物理空间是,新插入的记录存储在文件的末尾;
, p. m1 t/ I$ z 2、 堆文件常常用作存储那些将来使用,但目前不清楚如何使用的记录,为了实现文件记录的有效存取,堆文件经常与附加的存取路径一起使用;
, J" T% z( e+ r 3、 查找操行平均需要搜索(B+1)/2个磁盘块,效率比较低;
: R6 x) B" o: E5 V, M6 @; J! G 4、 插入操作十分简单,先读文件头,找到最末磁盘地址,将最末磁盘块读入内存,将需插入的新记录写入磁盘块的末端,最后将修改过的磁盘块写回磁盘;
0 @% V, ^- j7 V/ M4 |) Z0 w 5、 删除比较复杂,可以先找到被删除记录所在的磁盘块,读入内存后在内存缓冲区删除记录,最后再写回磁盘;也可以在每个记录的磁盘空间增加一个删除标志位,当需要删除记录时,将标示位置1;
M4 z& G& E- ]( h! m6 R 6.2.2 顺序文件
1 i8 e: k4 g: C3 w 1、 顺序文件按照文件记录在查询码上的取值的大小顺序排列各个记录;
T- ? `& I" \( [. M+ I5 n 2、 顺序文件的每个记录中有一个指针字段,根据查询码大小用指针将各个记录按序连接起来;3 O5 k1 q/ _: x: j _0 z7 _) b
3、 文件建立时,应尽量使记录的物理顺序与查找码的顺序一致,以减少访问磁盘块的次数;! v; {8 Q: j6 H( V8 t" T" L- u. W- c
4、 根据查询条件对顺序文件进行查询时,如查询条件定义在查找码上,则使用二分法查找技术快速找到记录,如条件不在查找码上,则必须从头到尾依次扫描磁盘块,与堆文件一致,所以顺序文件的访问效率也不高;
+ S0 C1 y8 z3 r5 m, L& P 5、 顺序文件插入工作包括定位和插入:) B2 H6 T- W/ }8 \2 U: {0 B
(1) 定位:在指针链中找到插入的位置,即插入记录在哪个记录的前面;# D7 C. h) I+ f9 P' W
(2) 插入:如有自由空间,则在该位置插入新记录,如没有自由空间,则只能插入溢出块中,重新调整记录指针链关系,保证记录顺序;
) c8 B% y6 S( F8 B$ w+ ^( e 6.2.3 聚集文件, \! L; K) K/ E+ a
1、 聚集文件是一种具有多种记录类型文件,存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型;
[7 _9 Q* |, r: k/ K 2、 当数据库中数据量效大时,对数据库查询需要多次访问磁盘文件,严重影响性能指标,为了降低多表操作时的磁盘访问次数,提高多表查询速度,可采用聚集文件;0 y- l/ a* R0 r# Z3 ^
3、 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少多表查询时磁盘块的访问次数,提高处理速度;
' p3 |+ x8 y Q9 t8 f& G; c/ j 6.2.4 索引文件, M" h/ D0 c/ M5 L- z% b; W& `
是一种利用索引技术技术快速文件访问的文件组织和存取方法;7 ]- W- k: v. Z* y5 q
6.2.4 散列文件, @& q3 Y u+ l6 ?1 ~0 g
是一种利用散列函数支持快速文件访问的文件组织和存取方法; |