今天看了几篇文章,本身总结一下。数据库
数据库使用B+树确定是为了提高查找效率。数据结构
可是具体如何提高查找效率呢?优化
查找数据,最简单的方式是顺序查找。可是对于几十万上百万,甚至上亿的数据库查询就很慢了。设计
因此要对查找的方式进行优化,熟悉的二分查找,二叉树能够把速度提高到O(log(n,2)),查询的瓶颈在于树的深度,最坏的状况要查找到二叉树的最深层,因为,每查找深一层,就要访问更深一层的索引文件。在多达数G的索引文件中,这将是很大的开销。因此,尽可能把数据结构设计的更为‘矮胖’一点就能够减小访问的层数。在众多的解决方案中,B-/B+树很好的适合。B-树定义具体能够查阅,简而言之就是中间节点能够多余两个子节点,并且中间的元素能够是一个域。相比B-树,B+树的父节点也必须存在于子节点中,是其中最大或者最小元素,B+树的节点只存储索引key值,具体信息的地址存在于叶子节点的地址中。这就使以页为单位的索引中能够存放更多的节点。减小更多的I/O支出。所以,B+树成为了数据库比较优秀的数据结构,MySQL中MyIsAM和InnoDB都是采用的B+树结构。不一样的是前者是非汇集索引,后者主键是汇集索引,所谓汇集索引是物理地址连续存放的索引,在取区间的时候,查找速度很是快,但一样的,插入的速度也会受到影响而下降。汇集索引的物理位置使用链表来进行存储。索引