此B树中的最大和最小键数

时间:2010-11-07 03:38:26

标签: b-tree

这来自家庭作业:

  

假设每个页面(磁盘块)有16K字节,每个KVP有8个字节。从而   我们决定使用minsize(16000/8)/ 2 = 1000的B树。让T成为这样一个B树,   假设T的高度为3.最小和最大键数是多少   可以存储在T?简要说明你的答案。

     

由于B树的特性,请注意以下事项:
  每个节点最多有2000个键   每个节点至少有1000个密钥(根节点除外)

我无法理解内存如何限制键的数量。 在我看来,由于每个页面有16000字节的空间,每个键占用8个字节,因此每个页面可以存储2000个密钥,这是每个级别可以存储的最大密钥数。

以下是我的计算:
最小键数= 1000(1001)(2)+ 1 = 2002001键至少
(因为根不限于拥有至少1000个键)
最大键数= 2000(2001)(2001)=最大8008002000键

我觉得我错过了一些重要的东西,因为问题不能这么简单。

1 个答案:

答案 0 :(得分:2)

有些明显的暗示:每个非叶节点都有一个右子节点和一个左子节点。此外,还有指向键/值对的指针,但它们可能会被存储。 (1000似乎很多......)想想你将如何存储这1000多个数据点。

+--------------+
|     Root     |
| Left   Right |
+---+------+---+
    |      |
    |  +---+----------+
    |  |   Level 2    +---Data: List, hash table, whatever
    |  | Left   Right |
    |  +---+------+---+
    |      |      |
    |      Etc    Etc
    |
+---+----------+
|   Level 2    +---Data: List, hash table, whatever
| Left   Right |
+---+------+---+
    |      |
    Etc    Etc