MYSQL 数据结构

  • hash算法

    • hash函数,散列分布
      • 复杂度O(1)
      • 精确查找快, 不支持范围查找
  • 二叉树查找树

    • 定义
      • 1. 左子树所有节点的值均小于他的根节点的值
      • 2. 右子树所有节点的值均大于他的根节点的值
      • 3. 子树也符合以上规则
    • 缺点
      • 数据不平衡
  • 平衡二叉树

    • 定义
      • 1. 二叉查找树的定义
      • 2. 左右两个子树的高度差的绝对值不超过1(子高平衡)
    • 缺点
      • 几乎每次插入/删除节点都会影响二叉树的平衡
  • 红黑树

    • 定义
      • 1. 每个结点要么是红的,要么是黑的
      • 2. 根结点是黑的
      • 3. 每个叶结点,即空结点(NIL)是黑的
      • 4. 如果一个结点是红的,那么它的俩个儿子都是黑的
      • 5. 对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点(黑高平衡)
  • B树(平衡多路查找树)

    • m阶的B树定义
      • 1. 根节点至少有2个节点
      • 2. 每个中间节点都包含k-1个元素和k个孩子, 其中 m/2 <= k <= m
      • 3. 每个叶子节点都包含k-1个元素, 其中 m/2 <= k <= m
      • 4. 所有叶子节点在同一层上
      • 5. 每个节点的元素从小到大排列
    • 优缺点
      • 横向扩展, 不会增加深度
    • 特点
      • 1. m阶B树节点最多有m个子树, m-1个元素
      • 2. m阶B树节点最少有m/2个子树, m/2 - 1 个元素
      • 3. 数据即存在叶子节点, 也存在中间节点
      • 为了磁盘或其它存储设备而设计的一种多叉平衡查找树, 多用于做文件系统的索引
        • 因为文件系统和数据库一般都是存在电脑硬盘上的,如果数据量太大的话不一定能一次性加载到内存中。但是B树可以多路存储, 刚好可以对应数据存储的页.
  • B+树

    • m阶的B+树定义
      • 1. 根节点至少有2个子女
      • 2. 每个中间节点都至少包含ceil(m / 2)个孩子,最多有m个孩子
      • 3. 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
      • 4. 所有的叶子结点都位于同一层
      • 5. 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划
    • 特点
      • 1. m阶B树最多有m个子树, m-1个元素
      • 2. 每个中间节点至少包含ceil(m/2)个子节点
      • 3. 每个叶子节点都有左右2个指针,指向左右的下一个数据数据,形成一个有序的双向链表
      • 4. 只有叶子节点才会有data,其他都是主键索引
    • 优缺点
      • 横向扩展, 不会增加深度
posted @ 2021-09-13 22:03  果果虫  阅读(227)  评论(0)    收藏  举报