数据库管理系统DBMS之缓存管理

时间:2022-05-16 22:07:13

数据库管理系统DBMS之缓存管理

赵锴 Kai Zhao  kingaim@gmail.com

【本文与本人所在公司无关】


"Computer Science has only three ideas: cache, hash, trash"

Greg Ganger, CMU


1缓存模块的设计目标

由于计算机的存储系统存在着层次结构,使得存储层次之间的缓存成为一项不可或缺的技术。图3.1.1列出了计算机存储系统的一般层次结构。

数据库管理系统DBMS之缓存管理

                                                                  图3.1.1 计算机存储系统的层次结构

 

            随着存储层次的升高,数据存取速度越快,存储容量越少,价格也越高。在第三层,因为固态硬盘与传统的磁介质存储硬盘在存取速度和存取方式有着明显的差别,所以将它们分别列出。在读写过程中,固态硬盘不存在像传统硬盘那样的磁头移动与定位问题,所以固态硬盘的随机读大约是传统硬盘的100倍,而且顺序读写速度也都有大幅的提高。关于固态硬盘和传统硬盘的详细比较,请参见附录A.1。

 

            由于数据访问符合局部性原理(Locality ofReference),包括时间局部性(Spatial locality)和空间局部性(Temporal locality),使得层次之间的缓存成为必然。数据库管理系统中的缓存模块就是采用合适的策略在有限的内存中尽可能多的缓存硬盘上的数据,从而使整个系统具有内存的速度和硬盘的容量


 

 数据库管理系统DBMS之缓存管理

                 3.1.2磁盘文件中磁盘页与缓存数据页的对应关系

 

通常,数据以页为单位存储在硬盘文件中。图3.1.2显示了磁盘文件中磁盘页(Disk Page)与缓存数据页(Data Page)的一种对应关系。可以看到,磁盘文件的磁盘页在缓存中以数据页的形式存在。当请求磁盘页已经在缓存中,称为命中(Hit),例如Disk Page2,否则就是未命中(Miss hit),例如DiskPage3。因此,缓存模块的设计目标就是:

 

1:磁盘页缓存的快速检索。在内存中开辟一块空间(Memory Pool),采用特定的数据结构(通常是Hash表)来缓存磁盘页。对于给定的磁盘页请求,该数据结构能够快速判断磁盘页是否在缓存中命中。如果命中,则返回该磁盘页对应的数据页,否者,需要把磁盘页从磁盘读到空闲数据页中,并返回该数据页;

 

2:缓存替换策略(Cache Replacement Policy)的实现。缓存替换策略除了(1)尽可能提高磁盘页请求的命中率外,(2)当缓存在Memory Pool中的数据页过多时(或者无法找到可用的数据页时),还需采用特定的策略进行数据页淘汰。数据页被淘汰,会有两种结果:(1)如果数据页内容被修改,则该数据页在其内容被写回磁盘页后成为空闲数据页,(2) 如果数据页内容未被修改,则该数据页的内容被直接重置后成为空闲数据页。