少年阿宾

那些青春的岁月

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
二叉树->b-树,解决的是读索引的IO次数问题

在真实的数据库中
往往索引本身的数据量也是非常庞大的
树的查找,其实是每一层需要做一次判断
因为索引很大,只能存在文件里,不能一次加载,所以没判断一层,都需要有一次磁盘IO,所以查找IO次数最坏的情况
就是树的高度-1,加入你要的节点在最后一层的话
二叉树,是只有两个子节点的
一单数据量一大的话
树高会很恐怖
B-Tree,的度是没有限制的
可以打打减少这个数的高度,从而减少磁盘读的次数


b-tree -> b+tree :这个是针对IO的再次优化
b+tree,的父节点是不存数据的
 数据库索引,其实一个节点刚好占的是硬盘的一页空间
 由于索引节点不存数据
 一个硬盘页,也就是一个节点的度就可以更大
 可以最大程度减少树的高度
 之所以一个节点刚好占一页,也是IO的问题,一次硬盘IO只能读一页
 这是结构上的改进
 效果就是一个节点一次IO的度更大了
 他这个意思就是说,如果有索引,一次索引查找,基本不会超过2次硬盘IO
 这还只是b-tree
 b-tree这玩意儿就读B树
 很多人读B减数是误读
























posted on 2015-04-07 22:39 abin 阅读(398) 评论(0)  编辑  收藏 所属分类: mysql

只有注册用户登录后才能发表评论。


网站导航: