博客
关于我
Java数据结构与算法-多路查找树(2-3树,B树,B+树,B*树)[day11]
阅读量:679 次
发布时间:2019-03-16

本文共 1002 字,大约阅读时间需要 3 分钟。

多路查找树

多路查找树是一种优化传统二叉树的数据结构,通过提高节点的容量和效率来降低数据存储和查询复杂度。这种树的设计针对大量数据的存储和检索问题进行了优化。

多叉树

二叉树在处理海量数据时存在以下问题:

  • 节点较多时的构建问题:当数据量大时,多次I/O操作会显著降低构建效率。
  • 树高导致的性能问题:大量节点会导致树的高度增加,从而降低查找效率。
  • 多叉树(multiway tree)通过允许每个节点具有更多的数据项和子节点来解决这些问题。常见的多叉树类型包括2-3树、2-3-4树等。多叉树通过重新组织节点结构,显著减少树的高度,从而提升查询速度。

    B树

    B树是一种广泛应用于文件存储和数据库系统的多路查找树。其核心特点是通过定期重新组织节点,降低树的高度和读取次数。每个节点的大小通常设置为磁盘的一个页面(如4KB),确保每次I/O操作可以一次性读取整个节点。B树的阶(M)设置为1024,这样对于最大存储空间(如600亿个元素),仅需4次I/O操作即可读取目标元素。

    B树的搜索过程如下:

  • 从根结点开始,按照键值在当前节点内的范围内进行二分查找。
  • 如果找到目标键值,查询结束。
  • 否则,进入目标键值所在子树,并重复第一步,直到命中叶子节点或出现无法继续的情况。
  • 2-3树

    2-3树是B树中最简单的变体。其特点包括:

  • 所有叶子节点位于同一层。
  • 二节点(有两个子节点)和三节点(有三个子节点)按规则构建。
  • 数据插入时需遵循BST的有序性规则。
  • 下面是构建2-3树的示例:

    • 插入顺序:16, 24, 12, 32, 14, 26, 34, 10, 8, 28, 38, 20。
    • 处理规则:当插入数据时,若不能满足二节点或三节点的要求,则需拆分并调整上层节点。

    B+树

    B+树是一种变体,用于提高文件系统和数据库的性能。其特点包括:

  • 数据仅存在于叶子节点(稠密索引)。
  • 搜索性能与B树相同,但B+树不允许在非叶子节点命中。
  • 非叶子节点仅作为叶子节点的索引,叶子节点存储实际数据。
  • B+树的结构优化了磁盘预读原理,通过增加非叶子节点的最小键值数量,提升数据存储和检索效率。

    B*树

    B*树是B+树的一种变体,其特点包括:

  • 非叶子节点的最小键值数量为(2/3) * M(约为666),比B+树的1/2更高。
  • 新结点分配的概率低,空间利用率更高。
  • B*树在存储层面优化了空间利用率,同时保持了与B+树相同的查找性能。

    转载地址:http://xrvqz.baihongyu.com/

    你可能感兴趣的文章
    MYSQL:基础——3N范式的表结构设计
    查看>>
    MYSQL:基础——触发器
    查看>>
    Mysql:连接报错“closing inbound before receiving peer‘s close_notify”
    查看>>
    mysqlbinlog报错unknown variable ‘default-character-set=utf8mb4‘
    查看>>
    mysqldump 参数--lock-tables浅析
    查看>>
    mysqldump 导出中文乱码
    查看>>
    mysqldump 导出数据库中每张表的前n条
    查看>>
    mysqldump: Got error: 1044: Access denied for user ‘xx’@’xx’ to database ‘xx’ when using LOCK TABLES
    查看>>
    Mysqldump参数大全(参数来源于mysql5.5.19源码)
    查看>>
    mysqldump备份时忽略某些表
    查看>>
    mysqldump实现数据备份及灾难恢复
    查看>>
    mysqldump数据库备份无法进行操作只能查询 --single-transaction
    查看>>
    mysqldump的一些用法
    查看>>
    mysqli
    查看>>
    MySQLIntegrityConstraintViolationException异常处理
    查看>>
    mysqlreport分析工具详解
    查看>>
    MySQLSyntaxErrorException: Unknown error 1146和SQLSyntaxErrorException: Unknown error 1146
    查看>>
    Mysql_Postgresql中_geometry数据操作_st_astext_GeomFromEWKT函数_在java中转换geometry的16进制数据---PostgreSQL工作笔记007
    查看>>
    mysql_real_connect 参数注意
    查看>>
    mysql_secure_installation初始化数据库报Access denied
    查看>>