深入理解Mysql索引底层数据结构与算法

  • Post author:
  • Post category:mysql

这是我第一篇CSDN文章,谢谢关注

你好CSDN! 这是我第一次在CSDN使用 Markdown编辑器 。有必要说一下,因为在找工作时被HR猎头问了一句:“你平常有没有写技术博客啊?”,顿时傻了,我说:“现在还在学习,还没有达到成为可以分享经验的水平”,但是我知道,其实边学习边记录,才可能成为技术大牛。很多地方可以学习,有有知乎、极客时间、腾讯图灵学院、尚硅谷、CSDN~~

做笔记的好处

我仔细地想了想,归纳为如下几点:

  1. 任何行业的任何人都必须勤奋努力,在机会来临之前, 克服自己的懒惰,每天写一点技术文章 ,长期积累,达到属于自己的10000小时
  2. 温故而知新,可以为师矣 ,做笔记主要为了以后回头看,巩固知识点;
  3. 可以随时看当时的笔记是否有缺漏或者错误,可以及时补缺补漏,进行更正或补充 ;
  4. 主要我以前的笔记都在电脑本地,或者硬盘里,我在想哪一天电脑或者硬盘损坏了,我就完蛋了!!保存在CSDN的服务器上,免费存储,没错,我是为此而来的~~
  5. 在本地电脑做笔记,每次我都新建一个文件夹,太多了没有一个知识体系或者文件分类,希望在CSDN提高自己整理知识点以及文件分类管理的能力
  6. 是我这篇文章的网址1,我在试下Markdown的”[1]”标注功能。

Mysql数据库涉及的算法

  1. 二叉树: 使用二叉树添加索引,极端情况下存1~6,它是一个单边,得查找6次才找到;
  2. 红黑树:相比较二叉树,有自平衡的功能, 存1~6,得4次才找到,数据量大的话数据深度很深;
  3. hash算法:定位式查找,一次查询就可以找到,但是不适用数据的排序功能;
  4. Btree :相比较红黑树的深度,它的数据结构是横向扩展的,但是缺点是每个子节点存储了data;
  5. B+Tree:B+Tree 叶子节点才存储data,可以增加度,度一般会超过100,因此h非常小(一般为3到5之间)
    (1)预读:磁盘一般会顺序向后读取一定长度的数据(页的整数倍)放入内存
    (2)局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用

mysql存储引擎(针对于表)

  1. MyISAM:MyISAM索引文件和数据文件是分离的
    (1) MyISAM主键索引: B+Tree叶子节点存储的是 数据行的文件地址/文件指针
    (2) MyISAM普通索引:另外的一个B+Tree叶子节点存储的是 数据行的文件地址/文件指针

  2. InnoDB:InnoDB索引文件和数据文件是合在一起的
    (1) InnoDB主键索引: B+Tree叶子节点存储的是 索引+数据(聚集索引)
    (2) InnoDB非主键索引 : B+Tree叶子节点存储的是 主键


  1. 网址说明 ↩︎


版权声明:本文为qq_34234008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。