第六章 存储技术与数据库物理设计7 ~. K" s; N2 x D6 Q
6.1 文件组织
8 d) {/ J2 y6 F7 U6.1.1 数据库的物理结构
+ b0 O) t: a7 l2 `/ ~1、 数据库中的应用数据是以文件形式存储在外存上的,文件在逻辑上被组织成记录的序列,即每个DB文件可看作是逻辑记录的集合;+ l! {# _' W" K3 w
2、 一个文件在磁盘上占有一定的物理存储空间,文件中的每个逻辑记录被映射存储到某个特定的磁盘块上,一个文件在物理上可以看作是由存放文件记录的一系列磁盘块组成,称为物理文件;. h: `! R" p1 c$ Z! m
3、 文件的逻辑记录与磁盘间的映射关系是由操作系统或DBMS来管理的,当需要对一个文件的逻辑记录进行操作时,先要根据这种映射关系找到该逻辑记录所在的磁盘块,然后再进行操作。6 l6 _7 `+ {* @, G' x
4、 从数据库物理结构角度需要解决如下问题:" ]0 }) K% i8 U1 ?8 U' Y
(1) 文件的组织;
5 h5 _$ L- W9 m# i6 v( z(2) 文件的结构;
/ U( }9 A' t( C(3) 文件的存取;
0 r8 z: B0 v- E/ s' w(4) 索引技术;
, ?" J" r A# l4 s5 d: }+ R6.1.2 文件组织. z: q4 t# W" f7 s' p1 m
1、 数据库与文件的对应关系
C: }( A% U7 ~. a- Y$ W(1) 在外存中,数据库以文件形式组织,文件由逻辑记录组成,记录由多个域组成;
( ?2 q9 `; P, K(2) 一个关系数据库包括一张或多张关系表,关系表与文件的对应关系有如下方式:% w; k0 i, x) C( c7 [
(A) 每张关系表单独用一个文件来存储,由DBMS通过OS的文件管理功能来管理;' A$ F5 y9 z9 N8 w
(B) 现代中大型DBMS是由OS直接分配一块大的磁盘空间,DBMS将该磁盘空间作为数据库磁盘文件直接管理,DB的所有关系表都存储在该文件中;
. v7 P. G! b1 _' W) @(1) 关系表在逻辑上由一系列元组组成,元组由多个属性组成,每个元组可以用磁盘文件中的一个逻辑记录来存储,记录包括多个域,对应元组的多个属性;$ \% [9 f7 K/ `) ^
2、文件记录格式:9 a# w' b: b$ K
(1) 数据库文件通常采用两种逻辑记录格式:定长记录格式和变长记录格式;, L' X" @# x$ g
6.2 文件结构与存取
/ u) C- O8 i0 {" p; H, R: R6.2.1 堆文件+ c! ~* K% `9 w" }, e5 ^; J
1、 堆文件也称无序文件,记录随机在存储在文件物理空间是,新插入的记录存储在文件的末尾;2 ~! o5 W5 J0 ?1 x# e' [0 Q
2、 堆文件常常用作存储那些将来使用,但目前不清楚如何使用的记录,为了实现文件记录的有效存取,堆文件经常与附加的存取路径一起使用;) x& g# i5 w% d0 @
3、 查找操行平均需要搜索(B+1)/2个磁盘块,效率比较低;
+ l( s4 @/ ^. q M& v, ]1 K4、 插入操作十分简单,先读文件头,找到最末磁盘地址,将最末磁盘块读入内存,将需插入的新记录写入磁盘块的末端,最后将修改过的磁盘块写回磁盘;
8 c0 q, i! `. N/ K: }( u5、 删除比较复杂,可以先找到被删除记录所在的磁盘块,读入内存后在内存缓冲区删除记录,最后再写回磁盘;也可以在每个记录的磁盘空间增加一个删除标志位,当需要删除记录时,将标示位置1;! d& k5 ?( Z1 I
6.2.2 顺序文件1 K$ E8 }( E4 z3 _4 m( |5 v0 K
1、 顺序文件按照文件记录在查询码上的取值的大小顺序排列各个记录;
# n2 K8 G7 b) K2、 顺序文件的每个记录中有一个指针字段,根据查询码大小用指针将各个记录按序连接起来;$ X8 k, e6 C5 `) @2 ?" j' `: Q) }
3、 文件建立时,应尽量使记录的物理顺序与查找码的顺序一致,以减少访问磁盘块的次数;% e" O# F2 \* p3 ~" ?" x: {0 V0 j
4、 根据查询条件对顺序文件进行查询时,如查询条件定义在查找码上,则使用二分法查找技术快速找到记录,如条件不在查找码上,则必须从头到尾依次扫描磁盘块,与堆文件一致,所以顺序文件的访问效率也不高;# T; ~* O: N9 a
5、 顺序文件插入工作包括定位和插入:) N# s7 q$ ~- x# [8 _5 B4 |0 l
(1) 定位:在指针链中找到插入的位置,即插入记录在哪个记录的前面;
4 G7 k1 S7 o6 P! ~+ Y(2) 插入:如有自由空间,则在该位置插入新记录,如没有自由空间,则只能插入溢出块中,重新调整记录指针链关系,保证记录顺序;
! A! a6 ~7 ]6 C4 z3 L* E+ n3 u9 G6.2.3 聚集文件
" S8 Y! G, y' }, e7 q4 @6 ?3 [; H1、 聚集文件是一种具有多种记录类型文件,存储了来自多个关系表的数据,每个关系表对应文件中的一种记录类型;
6 `) h1 ]2 Z, I: g' [1 d+ M2、 当数据库中数据量效大时,对数据库查询需要多次访问磁盘文件,严重影响性能指标,为了降低多表操作时的磁盘访问次数,提高多表查询速度,可采用聚集文件;& X; F7 L9 _, L. ~, g5 T7 F- F
3、 聚集文件将不同关系表中有关联关系的记录存储在同一磁盘块内,从而减少多表查询时磁盘块的访问次数,提高处理速度;9 n; h7 Y& G; Q Z b
6.2.4 索引文件
' q" C* ~6 ^- p& t9 q# `( D/ Q是一种利用索引技术技术快速文件访问的文件组织和存取方法;, J$ s) @4 L6 F$ ~
6.2.4 散列文件3 `' r k$ b7 N& q
是一种利用散列函数支持快速文件访问的文件组织和存取方法; |