pyt*_*hon 7 memory sql-server tree computer-science b-tree
我正在观看有关 B+ 树基础知识的视频,他提到 B+ 树叶子存储在磁盘上,除了root存储在main memory. 我的教授在课堂上提到索引存储在 中main memory,并且leaves包含指向磁盘的数据指针。
见下图:
我的问题是所有索引到底存储在哪里?
我已经浏览了几个链接,但没有人明确提到这部分?谁能澄清我的问题。谢谢
你所听到的在很多方面都是垃圾。
为了使 B 树索引正常工作,没有预先设计的方案来存储需要存储的内容。RDBMS 可以自由决定在哪里存储什么类型的数据。
据我所知,大多数 RDBMS 都会统一处理所有 B 树页面和所有非树数据页面。有一个内存缓存用于快速访问,但所有数据也存储在磁盘上。没有理由区分树和非树。此外,在存储数据时,根页、内部页和叶页之间没有区别。
但事实并非必须如此,可以做出不同的选择。
说树根会受到特殊对待,这肯定是假的。它需要与索引内容一样持久,因此它必须存在于磁盘上。仅将其存储在内存中会丢失索引,以防数据库关闭。
某些数据库系统支持内存索引,这些索引在数据库启动时从持久数据重建。这也是一个有效的设计选择。但这是一种选择,并非必须如此。