Mysql进阶(一):Mysql索引底层数据结构

了解Mysql底层之前,首先要对以下几种数据结构有着比较深入的了解:

  • 二叉查找树
  • 平衡二叉树
  • 红黑树
  • 哈希表
  • B - 树

为什么要了解这几种数据结构?从这些数据结构出发可以对Mysql的底层有着更加深入的理解。首先来看以下二叉查找树,在查找的过程中,二叉查找树可以将查找效率优化到O(logN),了解二叉查找树一定明白,二叉查找树的一个重要的性质就是比当前节点小的节点都位于当前节点的左子树,比当前节点大的节点都位于当前节点的右子树。但是二叉查找树有着一个相对致命的缺点影响二叉查找树的效率,当插入线性递增或者递减的数据的时候,二叉查找树会退化为为链表,导致查找效率从O(logN)退化为O(N)。为了消除二叉查找树的这种劣势,平衡二叉搜索树被提出,相对于二叉查找树,平衡二叉搜索树每次插入新节点之后调整左右子树的高度差使得树始终保持一个相对平衡的高度。“金五足金,人无完人” 平衡二叉搜索树也并非完美的存在,在每次插入新节点的过程中,都需要消耗系统资源用于调整树的高度使其平衡,对于平衡二叉搜索树,红黑树的提出,弥补了这种缺陷,红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,红黑树并不追求 “完全平衡”,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。

那么到底什么事索引呢 ? 索引的本质就是排好序数据结构。如何理解索引的本质 ?

上面提及的所有数据结构中,红黑树的提出已经很大程度满足查找需要的效率,但是面对海量数据的时候,采用这种数据结构依然无法满足系统的需求。Mysql中索引底层存储的数据结构默认采用的是B + 树的数据结构,这种数据结构的优势可以通过控制树的高度提高存储查询效率。与B - 树相比,Mysql对B -树做了一些变种 :

  • 非叶子节点只存储索引
  • 叶子节点包含所有索引字段
  • 叶子节点通过指针链接,提高区间访问效率【 双向指针 】
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值