如何计算数据库磁盘块?

时间:2014-01-21 00:46:20

标签: mysql sql database block

我正在做一些准备形式我的数据库决赛,我正在堆叠这个问题。我有答案,但我不确定我的步骤是否正确。如果你能告诉我我的答案中是否有正确的逻辑,我将不胜感激。谢谢

  

假设EMPLOYEE表有2000个元组。它有一个主键   名为ID的列,其范围为[1 - 2000]。它还有一个专栏   叫做DOB(出生日期)。其中有250个不同的DOB值   员工(即平均四名员工共享相同的DOB)。   假设20个EMPLOYEE元组可以放入磁盘块中。每   下面给出的场景是独立的,这是因为ID被编入索引   一个场景并不意味着它在其他场景中被编入索引。

     

假设EMPLOYEE在ID属性上有一个稀疏的B + -tree索引。   索引中的每个节点的最大扇出为100(每个节点在   树可以有100个孩子)。索引中的每个节点都已满50%。 (一个)   索引占用多少个磁盘块? (b)以下查询   将在最坏的情况下读取多少磁盘块(给出一个确切的   数字,例如,50)?

     

SELECT * FROM EMPLOYEE WHERE ID = 80;

     

(c)以下查询将读取多少个磁盘块?请注意这一点   查询项目ID。

     

从EMPLOYEE WHERE ID中选择ID ID> 1500;

     

(d)   以下查询将读取多少个磁盘块?

      SELECT MAX(ID)
      FROM EMPLOYEE;

A)我对此的看法是,如果索引(20000/200)中有100个条目,则每个块中有50个条目。所以2个条目用于条目和一个根块。

B)因为它是一个稀疏索引,所以它将读取顶层的一个块来计算出哪个情人要去,然后找到正确的值之一。所以在最坏的情况下它将读取2个块

C)2个街区。一个找到数字1500,另一个找到所有元组> 1500

D)3个街区。 2找到最大值块,另一个找到最大值本身。

  

假设EMPLOYEE具有单级,密集的聚类索引   DOB。假设索引中的每个节点可以容纳200个索引记录。   (a)索引占用多少个磁盘块?

     

(b)以下内容   查询将读取最坏情况下的磁盘块数(确切地说   数字,例如,50)?             选择ID             来自员工             WHERE ID = 80;

     

(c)以下查询将读取多少个磁盘块?请注意,此查询会投影DOB。

     

SELECT DOB FROM   雇员在哪里DOB<> “1/1/2000’ ;

     

(d)将阅读以下查询   多少个磁盘块?

     

SELECT * FROM EMPLOYEE WHERE DOB ='1/1/2000'';

A)再次出现3个街区。一个根,一个有200个条目,一个有50个

B)由于在此示例中未对ID进行索引,因此必须查看整个表。但我不知道如何计算块。

C)3块?必须扫描整个表格。

D)2个较低级别的块来查找索引

很抱歉这篇长篇文章,只是试图添加所有细节。

0 个答案:

没有答案