01.计算机存储系统:
02.磁道存储(数据库存储的重点)
扇面:
读写头和磁盘臂:
柱面:
磁盘控制器:
重映射:
03.磁盘性能的测量
访问时间:等于寻道时间+旋转等待时间
寻道时间:
平均寻道时间:
旋转等待时间:
数据传输率:
04.磁盘访问的优化
设置块:逻辑上的块
顺序访问
RAID
01.通过冗余提高可靠性
N张磁盘组成的集合中某张磁盘发生故障的概率会比特定的以一张磁盘发生的概率要高。
引入冗余(redundancy)是解决这个可靠性问题的方法。冗余对发生故障时重建信息。
实现冗余最简单的方式是:复制每一张磁盘。这种技术称为镜像(mirroring)。
1.一张逻辑磁盘由两张物理磁盘组成,并且每月一次写操作都要在两张磁盘上执行。如果其中一张磁盘发生了故障,数据可以从另一张磁盘读出。只有两张磁盘都发生故障,数据才会丢失。
2.一般情况下,先写一个磁盘,再对另一个进行拷贝。
02通过并行提高性能
磁盘镜像可以使得我们对多张磁盘进行并行访问,提高访问速度。
此外,也可以采用数据拆分(Striping Data)提高传输速率。有不同层次的数据拆分形式,如:块级拆分和比特级拆分等。其中块级拆分是最常用的数据拆分。
1.比特级拆分(Bit-Level Striping):将每个字节按照比特拆分,存储到多个磁盘上。
例如:有一个由8张磁盘组成的阵列,将每个字节的第i位存储到第i张磁盘,这8张磁盘阵列可以被看成单一的磁盘。这张大磁盘的一个扇区的大小是通常大小的8倍。它的传输速率也是通常的8倍。每张磁盘都参与每次的访问,每次读取的数据量是一张磁盘上的8倍。位级别的拆分可以推广到磁盘综述为8的整数倍或8的因子情况,如使用4张磁盘,则第第i位和第i+4位可以写到第i章磁盘上。
2.块级别的拆分(Block-Level Striping):将块拆分到多张磁盘上。假设有n张磁盘,则将第i块存储到第(i mod n)+1张磁盘上。块级拆分也提高了数据的传输速率。
磁盘中的并行主要有两个目的:
1.负载平衡多个小的操作(块访问),以提高这种访问操作的吞吐量。
2.并行执行大的访问操作,以减少大的访问操作的响应时间。
03.RAID级别
独立磁盘冗余阵列
除了磁盘镜像,奇偶校验结合磁盘拆分思想也可以实现冗余。
结合奇偶校验位、磁盘拆分思想、以及磁盘镜像,并对成本和性能进行权衡,提供了多种不同的冗余替代方案,并且分为RAID级别。
下图中P表示纠错位,C表示数据的拷贝
04RAID级别的选择
选择RAID级别应该考虑以下的因素:
所需的额外磁盘存储带来的花费
在I/O操作数量方面的性能需求
磁盘故障时的性能
在数据重建过程(rebuild performance 即,故障磁盘上的数据在新磁盘上重建的过程)中的性能
重建故障磁盘上数据的时间:RAID1最简单,直接从另一张磁盘中拷贝即可得到;其他级别的重建需要访问磁盘阵列中所有其他的磁盘来进行重建,比较复杂,耗时较长。
RAID0 - 可以用于数据安全不是很重要的高性能应用。
RAID2和RAID4被RAID3级和RAID5级所包含,所以一般RAID的选择只在RAID0,RAID1,RAID3和RAID5,RAID6上进行。
而RAID3的比特级拆分不如RAID5的块级拆分,RAID5在大数据上与RAID3同样好的数据传输率,同时对小数据的传输使用更少的磁盘,其并行性会减少延迟。实际中RAID3的性能会比RAID5的更差。
==>那么问题就变成如何在RAID1,RAID5和RAID6上进行。
RAID6级比RAID5具有更高的可靠性,可以用于数据安全十分重要的应用。
RAID1:提供较好的写操作的性能,在例如数据库系统日志文件的存储这类的应用中使用广泛
RAID5:相比RAID1需要较低的存储负载,但是写操作具有更高的开销。对于经常用读操作而很少进行写操作的应用,RAID5是首选。
记录在磁盘上的存储
01.文件和块
02.定长记录
01.问题1
02.问题2
解决1
解决2
解决2的缺点
解决2的优化:空闲链表
03.变长记录
变长记录=定长记录+变长属性
详细讲解 第一个字节是21,5 第二个字节是26,10,第三个字节是36,10 ,第四个直接是从12-20
而后就是空位图, 占一个字节
从21开始,是数据21-26 是一部分数据 26-36 又是一部分数据 36-45 又是一部分数据
分槽页结构:就是把一个页(块)进行构造
图:
解释:
页的各个部分存储的位置
出现删除的情况:
大数据对象:
一般数据库要求大数据的大小不超过一个块
—文件组织:记录是如何查找的
01.顺序文件
按照一个搜索码的顺序进行:
缺点是:
02.多表簇聚组织
一般数据库只会在一个大的文件中存储所有的关系
例子:
缺点:
数据字典:
元数据有什么:
使用元数据: