学习笔记:数据库原理CH8.存储管理

017_001.jpg

首先先来看一下存储的架构:

017_002.jpg

首先看到的就是Cache,也就是数据库的缓存,是最快的一个拿取数据的地方,缓存当然要考虑一个缓存刷入的问题。

之后是主内存,主内存这里要知道的是他是Random access的,RAM

之后是Secondary Storage,一般是硬盘,这里就有两种,机械硬盘和SSD

一般会在硬盘的一个区域设置buffer,跟缓存是一个道理的东西,可以理解为硬盘内部的缓存

017_003.jpg

然后就是Tertiary Storage 三级存储,这个就是会出现硬盘的阵列

017_004.jpg

有几种计算模型,RAM模型,DBMS模型,IO模型

先来看如何加速二级存储的读取速度:

017_005.jpg

最综合的就是建立RAID:

主要的三个优势是:

1、higher capacity,grouping multiple disks

2、higher performance,multiple parallel read write operation

3、reliability,stored redundantly

如何实现?

1、mirroring

2、striping

3、error correction

017_006.jpg017_007.jpg

之前在二级存储说到了buffer,就会有buffer manager,如何替换buffer呢?OS:LRU

在数据库钟,LRU并不是最好的

1、toss-immediate strategy

2、most recently used

3、statistical information about the probability

如何组织数据库中的文件?

固定长度,可变长度

固定长度:

017_008.jpg

会出现的问题:

1、一个block被删了,就需要填上其他的block

2、如果block的大小和存储的东西不是倍数关系,可能会出现cross block boundaries

如何解决?

设置一个空闲指针,指向空闲的block,free list

017_009.jpg

可变的数据:

有一个专门的offset记录长度

017_011.jpg

如果出现特别大的数据,可以分开,用指针连接即可

017_012.jpg


学习笔记:数据库原理CH8.存储管理
https://yiyuwang.be/2021/06/01/2021-06-01-377066314/
作者
StevenWong
发布于
2021年6月1日
许可协议