gpt4 book ai didi

database - btree是如何存储在磁盘上的?

转载 作者:太空狗 更新时间:2023-10-30 01:41:40 26 4
gpt4 key购买 nike

我知道如何在内存中实现btree,但不清楚如何将btree存储在磁盘中。我认为有两个主要区别:

  1. 内存指针和磁盘地址的转换,看这个post .
  2. 如何在插入新的 k/v 项时拆分页面?在内存中很容易实现。

谢谢

最佳答案

这完全取决于您使用的 DBMS。如果您想知道它是如何在 MS SQL Server 中实现的,可以阅读以下内容:

  • 页面(我想它们几乎存在于所有现代 DBMS 中)- 在 SQL Server 中它们是 8Kb。数据库文件由页面组成。
  • 范围 - 8 个连续页面的逻辑组
  • (S)GAM -(共享)全局分配图。包含有关空闲和占用范围信息的位图。这是数据库文件的第一页之一。
  • IAM - 索引分配图。您可以找出哪些索引/堆存储在哪些范围内。有了这些信息,您就可以在存储索引/堆的文件中找到位置。

使用 IAM 和 GAM(或 SGAM),您可以拆分页面 - 只需将页面的一部分(应该溢出)移动到文件中的另一个页面。

IAM 和 GAM 也是您第一个问题的答案。

这些名称中的大部分都取自 MS SQL Server,但我很确定,在其他 DBMS 中,它的解决方式非常相似。

希望对您有所帮助。

关于database - btree是如何存储在磁盘上的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4688795/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com