zoukankan      html  css  js  c++  java
  • Mysql 为什么要选择 B+Tree

    算法对比

    二叉树

    file

    当我查找 8 的时候需要走五步

    file

    红黑树

    file

    当我查询8的时候需要四次 相对于二叉树有了一些优化 没有无限延伸.红黑树的深度会很深(深度不可控制)

    file

    hash

    数据量大的话

    file

    查询很快(不能范围查找)

    BTree

    file

    查询只需要查两步就可以找到,缺点携带(data)扩大横向减少纵向深度
    ps:java拿取数据一般是这样的:java程序-->CPU--->内存---->硬盘,而内存与硬盘的交互是有大小限制的,是一页数据4k左右,所以不能把所有数据都放在一个节点来获取,一般来说节点会尽量预存4K容量。
    

    file

    B+Tree

    file

    BTree 变种B+Tree
    ps:data不放在非叶子节点来增加度(小节点),一般会一百个以上使得深度是3~5,从而减少查询次数。并且,叶子节点之间会有指针,数据又是递增的,这使得我们范围查找可以通过指针连接查找,而不再从上面节点往下一个个找。既减少了查询次数,又提供了范围查询.
    
    所以mysql采用的B+Tree算法

    blockchain

  • 相关阅读:
    4g项目shell脚本
    shell脚本执行方法
    linux 4g项目定时启动脚本
    java面试-mysql优化
    java面试-java8特性
    java面试-oom内存溢出有几种类型
    java面试-动态代理
    java面试-ThreadLocal
    java面试-类加载过程
    java面试-JVM内存模型
  • 原文地址:https://www.cnblogs.com/ziyegediao/p/11719641.html
Copyright © 2011-2022 走看看