数据库数据结构

92 阅读2分钟

Mysql 使用的索引结构是 B+ 树:

数据结构: 链表,数组,树,哈希

实现需求: 范围查询, 精准查询, 排序

  1. 链表: 数组查询效率低,需要遍历

  2. 哈希: 范围查询很难实现,而且数据量大容易造成哈希冲突

  3. 树: 以上三种需求都有符合,

    3.1 搜索二叉树:

     层数过大
    

    3.2 红黑树

     一样的层数过大
    

    3.3 B-树, B+ 树

      B+树是优化版的B-树,和二叉树, 红黑树的区别是减少了层数,即在每一层都有装了一个链表,B+树可以在子节点查询到父节点
      
      数据库选择B+树的原因有以下几点:
    
     1.  磁盘I/O效率高:B+树相对于其他树型数据结构,具有更高的磁盘I/O效率。因为B+树的非叶子节点只存储索引信息,而不存储数据信息,这使得在磁盘读取数据时,可以一次读取更多的索引信息,减少磁盘I/O操作次数,提高查询效率。
     2.  支持高效范围查询:B+树非常适合范围查询,因为B+树中相邻的数据块之间有指针相连,可以很快地定位到需要查询的数据块,提高范围查询的效率。
     3.  支持高效的顺序访问:B+树中的叶子节点按顺序存储,可以支持高效的顺序访问,例如按照索引顺序遍历所有数据,或者使用范围查询。
     4.  支持高效的插入和删除操作:B+树通过分裂和合并节点的方式,可以高效地处理插入和删除操作,使得数据库的写入性能更高。
    
     综上所述,B+树在数据库中得到了广泛的应用,其高效的磁盘I/O、范围查询、顺序访问、插入和删除等特性,使得B+树成为了一种非常优秀的数据结构。