这来自家庭作业:
假设每个页面(磁盘块)有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键
我觉得我错过了一些重要的东西,因为问题不能这么简单。
答案 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