数据库:关于(B-Tree)索引的更多问题

时间:2011-06-30 19:23:47

标签: database data-structures indexing b-tree

我一直在研究索引,有一些问题困扰着我,我觉得很重要。

如果您可以提供帮助或参考消息来源,请随时进行。

Q1: B树索引可以支持快速访问表上的特定行。考虑到OLTP系统,同时具有许多访问,同时读取和写入,您认为在该系统上有许多B树索引可能是一个缺点吗?为什么呢?

Q2:为什么B-Tree索引没有被完全占用(如果我没有弄错的话,通常只占75%?)

1 个答案:

答案 0 :(得分:1)

第一季度:我在实践中没有大型索引系统的管理经验,但典型的多处理环境缺点适用于在系统上拥有多个B树索引 - 上下文切换成本,高速缓存失效和刷新,不良的IO调度,名单上升。另一方面,IO本质上应该是最大限度地使用资源的非阻塞,并且如果没有某种并发性,即使以协作方式完成,也很难做到这一点。 (例如,有些人推荐基于事件的系统。)此外,对于许多实际应用程序,您将需要多个索引结构,尤其是在您查看OLTP时。这里最重要的是良好的IO调度,访问模式和数据缓存,具体取决于所述的访问模式。

Q2:因为拆分和重新平衡节点很昂贵。天真的速度方法是“只有在它们已满的情况下才能分开”。鉴于此,有两个极端 - 一个节点只是拆分并且半满,或者一个节点已满,所以它将是下一次。案件之间的“平均”(50%和100%)为75%。是的,从数学的角度来看,这是一个有点不好的逻辑,但它揭示了为什么75%的数字出现的根本原因。