腾讯笔试 数据库问题

来源:互联网 发布:淘宝类目属性数据库 编辑:程序博客网 时间:2024/06/16 13:13

题目描述:设文件F具有10000个记录,每个记录50字节,其中10字节用来表示文件的键值。每个磁盘块大小1000字节,指向磁盘块的指针占5字节,不允许记录跨两个块。
(1)如果为文件F建立简单的Hash索引,使用100个Hash桶,则桶目录需要多少磁盘块?平均每个桶需要多少磁盘块?
(2)如果为文件F建立B+索引,各磁盘块尽量填满,需要多少磁盘块存储索引?

答案:
(1)桶目录是是一个列表,100个桶可以存放在尺寸为100的int型数组中,一个int型占4个字节的话,总共400个字节,而一个磁盘块1000个字节,所以桶目录存放于1个磁盘块中;
给了100个Hash桶,一个桶里放100个记录,100个记录总共100*50=5000个字节,所以需要5000/1000=5个磁盘块。
(2)建立B+索引,从叶子节点算起,求出每个叶子节点的在尽量放满一块磁盘的情况下共存了多少条记录:10×R+5×R<=1000,R取66,所以叶节点的总数为⌈10000/66⌉=152个,即叶节点需要152个磁盘块;因为刚才计算出R=66,即上层节点是66叉树,那么上层节点数有⌈152/66⌉=3个,则需要3个磁盘块;再往上层节点走,只需要安排1个节点,即到达根节点。所以总共需要152+3+1个磁盘块。

答案只是个人想法,不一定正确,还希望各位指正交流

0 0
原创粉丝点击