Archive for March 18th, 2008

4层的索引,可以索引多少rows?

Tuesday, March 18th, 2008

比如一个index entry 是18bytes,一个8k的block,PCTFREE=10%,则可以存放8*1024*0.9/18=410,约为400个index entries
如果一个表有100,000,000 rows,那么需要250,000 leaf blocks
在算算branch:每个branch 记录了每个leaf的最大值和address,大约16 bytes。这样可以存储大约450 个 branch index entries
也就是说需要250000/450=556个branch block。
但是556个branch又需要多少个再上一级的branch block 来管理呢?
因为一个branch最多存储450个leaf entries,所以至少又需要2个branch blocks。
然而这两个branch blocks,还需要一个block来管理,这个block就是root 了。
BLEVEL 1 = 1 branch block
BLEVEL 2  = 2 branch blocks
BLEVEL 3 = 556 branch blocks
Leaf level(BLEVEL 4) = 250,000 leaf blocks
Table rows = 100,000,000 rows
所以一个4层的索引,至少就可以管理1亿条记录。

阿里巴巴DBA出品