B+树索引准确存储在哪里?

pyt*_*hon 7 memory sql-server tree computer-science b-tree

我正在观看有关 B+ 树基础知识的视频,他提到 B+ 树叶子存储在磁盘上,除了root存储在main memory. 我的教授在课堂上提到索引存储在 中main memory,并且leaves包含指向磁盘的数据指针。

见下图:

在此输入图像描述

我的问题是所有索引到底存储在哪里?

  • 我们是否只将根存储在主内存中?
  • 所有索引都存储在主存中?

我已经浏览了几个链接,但没有人明确提到这部分?谁能澄清我的问题。谢谢

usr*_*usr 8

你所听到的在很多方面都是垃圾。

为了使 B 树索引正常工作,没有预先设计的方案来存储需要存储的内容。RDBMS 可以自由决定在哪里存储什么类型的数据。

据我所知,大多数 RDBMS 都会统一处理所有 B 树页面和所有非树数据页面。有一个内存缓存用于快速访问,但所有数据也存储在磁盘上。没有理由区分树和非树。此外,在存储数据时,根页、内部页和叶页之间没有区别。

但事实并非必须如此,可以做出不同的选择。

说树根会受到特殊对待,这肯定是假的。它需要与索引内容一样持久,因此它必须存在于磁盘上。仅将其存储在内存中会丢失索引,以防数据库关闭。

某些数据库系统支持内存索引,这些索引在数据库启动时从持久数据重建。这也是一个有效的设计选择。但这是一种选择,并非必须如此。