B+树简介

1. B+树的优势:

        单一节点存储更多的元素,使得查询的IO次数更少;

        所有查询都要查找到叶子节点,查询性能稳定;

        所有叶子节点形成有序链表,便于范围查询。


2.Mysql存储索引用到的数据结构是B+树,hash比B+树更快,为何mysql要用B+树:
           内存角度:数据库中的索引一般在磁盘上,数据量大的时候无法一次性装入内存,B+树的设计可以允许数据分批加载;
           业务角度:数据库中经常会选中多条,由于B+树索引有序,并且又有链表相连,查询效率比hash快


3.既然增加树的路数可以降低树的高度,那么无限增加树的路数是不是可以有最优的查找效率:
           这样会形成一个有序数组,文件系统和数据库的索引都是存在硬盘上的,如果数据量大,不一定能一次性加载到内存中。有序数组没法一次性加载进内存,B+树可以每次加载一个节点,一步步往下找


4.内存中,红黑树比B树更优,但是涉及到磁盘操作B树就更优,讲B+树:
           B+树是在B树基础上进行改造,他的数据都在叶子节点,同时叶子节点之间还加了指针形成链表


5.为什么B+树要这么设计:
           B+树在数据库的索引中用得比较多,数据库中select数据,不一定只选一条,很多时候会选中多条,如果是多条,B树需要做局部的中序遍历,可能要跨层访问,而B+树由于所有数据都在叶子节点不用跨层,同时有链表结构,只需要找到首位,通过链表就能把所有数据取出来了

猜你喜欢

转载自blog.csdn.net/xyy_forever/article/details/127298022