跳到主内容

cmu15-721 lecture note

*

lecture2 内存数据库介绍

内存数据库和磁盘数据库的区别

DDBMS(Disk-oriented Database Management System)的很多设计是建立在磁盘模型上的,很多设计都是为了避免磁盘缺陷而设计的。但如今,硬件的改变使得大多数的数据库都能够存放在内存中,在这样的背景下,DDBMS的某些设计就不再是最优的。

Buffer Pool

因为DDBMS的数据都存放在硬盘或ssd中,磁盘读的速率比内存的速率低3个数量级, 因此需要使用缓存池来缓存磁盘页。

  • 缓存池的基本算法

    GetPage(pageid):

    • 如果不在缓存池中,从磁盘中使用pageId读取该页p,如果缓存池中有空余空间,则直接添加到缓存池中。
    • 如果没有空余空间,则按选举算法选举出某一页, 如果该页dirty位为假,直接移除该页,存放页p。
    • 如果该页dirty位为真, 在移除前将内容写入磁盘,其他操作如上。

    如果所有的数据都在内存中的时候,就不必再使用buffer poll。

    内存数据库的概念在19世纪80年代就提出来了,但是近期才由于硬件的发展而开始可行。

不要使用MMAP

因为一个好的数据库必须要自己掌控文件读写的时间点。OS不知道数据库中的知识,无法优化。

注释