1、存储介质:
高速缓存存储器、主存储器、快闪存储器、磁盘存储器、光学存储器、磁带存储器。
2、存储类型:
基本存储、辅助存储、脱机存储、易失性存储。
3、磁盘盘片的表面从逻辑上划分为磁道,磁道又划分为扇区,扇区是从磁盘读出和写入信息的最小单位。
磁盘质量的主要度量指标是容量、访问时间、数据传输率和可靠性。
访问时间:从发出读写请求到数据开始传输之间的时间。
数据传输率:从磁盘获得数据或者向磁盘存储数据的速率。
4、磁盘I/O请求是由文件系统和大多数操作系统具有的虚拟内存管理器产生的。
每个请求指定了要访问的磁盘地址,这个地址是以块号的形式提供的。一个块是一个逻辑单元,它包含固定数目的连续扇区。块大小在512字节到几KB之间。数据在磁盘和主存储器之间以块为单位传输。术语页常用来指块。
5、块访问的优化:
1)缓冲:从磁盘读取的块暂时存储在内存缓冲区中。
2)预读:当一个磁盘块被访问时,相同磁道的连续块也被读入内存缓冲区中,即便没有针对这些块的即将来临的请求。
3)调度:如果需要把一个柱面上的几个块从磁盘传输到主存储器,我们可以按块经过读写头的顺序发出访问块的请求,从而节约访问时间。
4)文件组织:按照与预期的数据访问方式最接近的方式来组织磁盘上的块。
5)非易失性写缓冲区:因为主储存器中的内容在发生电源故障时将全部丢失,所以关于数据库更新的信息必须记录到磁盘上。
6)日志磁盘:减少写等待时间。对日志磁盘的所有访问都是顺序的。
6、独立磁盘冗余阵列(RAID)
在多张磁盘中存储冗余信息,保证一个磁盘的故障不会导致数据的丢失。
实现冗余最简单的方法是复制每一张磁盘。这种技术称为镜像。
7、磁盘系统中并行的目的:
负载平衡多个小的访问操作(块访问),以提高这种访问操作的吞吐量。
并行执行大的访问操作,以减少大访问操作的响应时间。
8、文件组织:
一个数据库被映射到多个不同的文件,这些文件由底层的操作系统来维护。这些文件永久地保存在磁盘上。一个文件在逻辑上组织成为一个序列。这些记录映射到磁盘块上。每个文件分成定长的存储单元,称为块。块是存储分配和数据传输的基本单元。大多数数据库默认使用4~8KB的块大小。
9、一个块可能包含很多条记录。一个块所包含的确切的记录集合是由使用的物理数据组织形式所决定的。
没有记录是部分包含在一个块中,部分包含在另一块中。这个限制简化并加速数据项的访问。
定长记录文件比变长记录文件更容易实现。
10、定长记录:
在文件的开始处分配一定数量的字节作为文件头。其包含有关文件的各种信息。在插入一条新记录时,使用文件头所指向的记录,并改变文件头指针以及指向下一个可用记录。如果没有可用的空间,我们就把这条新纪录添加到文件末尾。
11、变长记录:
变长记录以下面几种方式出现在数据库系统中:
1)多种记录类型在一个文件中存储。
2)允许一个或多个字段是变长的记录类型。
3)允许可重复字段的记录类型,例如数组或多重集合。
实现变长记录必须解决的问题:
1)如何描述一条记录,使得单个属性可以轻松地抽取。
2)在块中如何存储变长记录,使得块中的记录可以轻松地抽取。
12、变长记录=初始部分是定长属性+接下来是变长属性。
对于定长属性,如数字值、日期或定长字符串,分配存储它们的值所需的字节数。对于变长属性,如varchar类型,在记录的初始部分中表示为一个对(偏移量,长度)值,其中偏移量表示在记录中该属性的数据开始的位置,长度表示变长属性的字节长度。在记录的初始定长部分之后,这些属性的值是连续存储的。因此无论是定长还是变长,记录初始部分存储有关每个属性的固定长度的信息。
13、分槽的页结构:
一般用于在块中组织记录。每个块的开始处有一个块头,包含:
块头中记录条目的个数,块中空闲空间的末尾处,一个由包含记录位置和大小的记录条目组成的数组。
实际记录是从块的尾部开始连续排列的。块中空闲空间是连续的,在块头数组的最后一个条目和第一条记录之间。如果插入一条记录,在空闲空间的尾部给这条记录分配空间,并且将包含这条记录大小和位置的条目添加到块头中。
14、文件中记录的组织:
堆文件组织:一条记录可以放在文件中的任何地方,只要那个地方有空间。记录是没有顺序的,通常每个关系使用一个单独的文件。
顺序文件组织:记录根据其“搜索码”的值顺序存储。
散列文件组织:在每条记录的某些属性上计算一个散列函数。散列函数的结果确定了记录应放到文件的哪个块中。
15、顺序文件组织:
搜索码是一个属性或者属性的集合。每条记录的指针指向按搜索码顺序排列的下一条记录。
使用指针链表来管理删除。对于插入操作,规则如下:
1)在文件中定位按搜索码顺序处于待插入记录之前的那条记录。
2)如果这条记录所在块中有一条空闲记录(即删除后留下来的空间),就在这里插入新的记录。否则将新记录插入到一个溢出块中。无论那种情况,都要调整指针,使其能按搜索码顺序把记录连接在一起。
16、多表聚簇文件组织:
是一种在每一个块中存储两个或者更多个关系的相关记录的文件结构。
通常每个关系的记录用一个单独的文件存储。但在多表聚簇文件组织中,几个不同关系的记录存储在同一个文件中。而且,不同关系的相关记录存储在相同的块中,于是一个I/O操作可以从所有关系中取到相关的记录。
17、数据字典存储:
1)关于关系的关系模式和其他元数据存储在称为数据字典或系统目录的结构中。系统必须存储的信息类型有:
关系的名字,每个关系中属性的名字,属性的域和长度,在数据库上定义的视图的名字和这些视图的定义,完整性约束(如,码约束)。
2)此外,很多系统为系统的用户保存了下列数据:
授权用户的名字,关于用户的授权和账户信息,用于认证用户的密码或其他信息。
3)数据库可能还会存储关于关系的统计数据和描述数据,如:
每个关系中元组的总数,每个关系所使用的存储方法(如,聚簇或非聚簇)。
4)数据字典也会记录关系的存储组织(顺序、散列或堆),和每个关系的存储位置:
如果关系存储在操作系统文件中,数据字典将会记录包含每个关系的文件名。
如果数据库把所有关系存储在一个文件中,数据字典可能将包含每个关系中记录的块记在如链表这样的数据结构中。
5)有必要存储关于每个关系的每个索引的信息:
索引的名字。被索引的关系的名字。在其上定义索引的属性。构造的索引的类型。
18、数据库缓冲区:
数据库系统的一个主要目标是尽量减少磁盘和存储器之间传输的块数目。减少磁盘访问次数的一种方法就是在主存储器中保留尽可能多的块。
缓冲区是主存储器中用于存储磁盘块的拷贝的那一部分。负责缓冲区空间分配的子系统称为缓冲区管理器。
19、主要技术:
1)缓冲区替换策略:当缓冲区中没有剩余空间时,在新块读入缓冲区之前,必须把一个块从缓冲区中移出。多数操作系统使用最近最少使用策略(LRU),即最近访问最少的块被写回磁盘,并从缓冲区中移走。(通常我们假定最近访问过的块最有可能再一次被访问)
2)被钉住的块:不允许写回磁盘的块。
3)块的强制写出:在某些情况下,尽管不需要一个块所占用的缓冲区空间,但必须把这个块写回磁盘。
20、缓冲区管理器应尽量不把数据字典和索引块从主存储器中移除。