物理存储介质分类
1.数据访问的速度
2.每单位数据的成本
3.可靠性
4.联机存储和脱机存储
5.顺序访问和直接访问
几级存储
1.基本存储
2.辅助存储
也称为联机存储,如:闪存, 磁盘
3.第三级存储
也称为脱机存储,如:磁带, 光学存储器
磁盘地物理结构
磁盘的每一个盘片是扁平的圆盘,它的两个表面都覆盖着磁性物质,信息记录在表面上
盘片从逻辑上被分为磁道,磁道又被分为扇区,扇区是磁盘读取和写入的最小单位
磁盘访问的优化
数据在磁盘和主存之间交换是以块为单位的
一个块是一个逻辑单元,它包含固定数目的连续扇区
一个数据库被映射到多个不同的文件,这些文件由底层的操作系统来维护。这些文件永久地存在于磁盘上。
一个文件在逻辑上组织成为记录的一个序列。这些记录被映射到磁盘块上。
每个文件都被分成定长的存储单元,称为块。块是存储分配和数据传输的基本单元。大多数数据库默认采用4-8KB的块的大小。
比如对于这张teacher表,文件中的每个记录定义(使用伪代码)如下:
type teacher = record
tno char(5);
name char(20);
dno char(20);
sal number(8,2);
end
假设每个字符占一个字节,则number(8,2)占8个字节,总共需要为teacher的一条记录分配53个字节。
最简单的方法是使用最开始的53个字节存储第一条记录,而接下来的53的字节存储第二条记录,以此类推
但上面这种简单的方法有两个问题
解决第一个问题的方法:在一个块中只分配它能完整容纳下的最大记录数。块中剩下的字节则不使用
在删除和插入新数据时,会遇到一些比较麻烦的情况,因此需要引入额外的结构
在文件的开始处设置文件头,文件头包含文件的各种信息,在文件头中还储存了被删除的第一个记录的地址。用这一记录来存储第二个可用记录的地址,以此类推。
可以简单地将这些看作指针,被删除地记录形成了一条链表,被称为空闲列表
当插入新记录时,使用文件头所指向的内容,改变文件头的指针以指向下一个可用记录。如果没有可用的空间,就直接将这条新记录添加到文件末尾
一条有变长属性的记录的表示通常具有两个部分:初始部分是定长属性,接下来是变长属性。
对于定长部分,直接分配所需的字节数。对于变长属性(如varchar),在记录的初始部分中表示为一个键值对(偏移量,长度),偏移量表示一条记录中该属性的数据开始的位置,长度表示变长属性的字节长度。
例
以一个instructor记录为例,它的前三个属性ID,name,dept_name是变长字符串,第四个属性salary是一个大小固定的数值。
表示如下
空位图用于表示哪个属性是空值,在这个记录中,如果salary是空值,该位图的第4位将置为1。存储在12~19字节的salary的值将被忽略
对于图片、音频等数据,这些数据比块大很多,可以使用blob和clob数据类型,大对象一般存储到一个特殊文件中,而不是与记录的其他属性存储在一起,然后一个指向该对象的指针存储到包含该大对象的记录中。
关系是记录的集合。给定一个记录的集合之后,如何在文件中组织它们呢?
文件中组织记录的几种可能的方法
通常,每个关系的记录用一个单独的文件存储。但在多表聚簇文件组织中,几个不同关系的记录存储在同一个文件中。
多表聚簇文件组织是一种在每一块中存储两个或者更多个关系的相关记录的文件结构。这样的文件组织允许我们使用一次块的读操作来读取满足连接条件的记录。
多表聚簇文件结构
对于多表聚簇,加速了对特定表连接的处理,但会导致其它类型的查询变慢。
在主存储器中保存所有的块是不可能的,需要管理主存储器中用于存储块的可用空间的分配。
缓冲区是主存储器中用于存储磁盘块的拷贝的那一部分。
当数据库系统中的程序需要磁盘上的块时,它向缓冲区管理器发出请求。
缓冲区管理器和操作系统中的虚拟内存管理器是一样的
缓冲区管理器中使用的技术
最近最少使用-LRU替换策略
与操作系统中的LRU类似,不再赘述
最近最常使用-MRU替换策略
如果必须从缓冲区移出一个块,则MUR策略选择最近最常使用的块(当块被使用时不能被替换)