深入理解Mysql索引底层数据结构与算法
这是我第一篇CSDN文章,谢谢关注
你好CSDN! 这是我第一次在CSDN使用 Markdown编辑器 。有必要说一下,因为在找工作时被HR猎头问了一句:“你平常有没有写技术博客啊?”,顿时傻了,我说:“现在还在学习,还没有达到成为可以分享经验的水平”,但是我知道,其实边学习边记录,才可能成为技术大牛。很多地方可以学习,有有知乎、极客时间、腾讯图灵学院、尚硅谷、CSDN~~
做笔记的好处
我仔细地想了想,归纳为如下几点:
- 任何行业的任何人都必须勤奋努力,在机会来临之前, 克服自己的懒惰,每天写一点技术文章 ,长期积累,达到属于自己的10000小时;
- 温故而知新,可以为师矣 ,做笔记主要为了以后回头看,巩固知识点;
- 可以随时看当时的笔记是否有缺漏或者错误,可以及时补缺补漏,进行更正或补充 ;
- 主要我以前的笔记都在电脑本地,或者硬盘里,我在想哪一天电脑或者硬盘损坏了,我就完蛋了!!保存在CSDN的服务器上,免费存储,没错,我是为此而来的~~
- 在本地电脑做笔记,每次我都新建一个文件夹,太多了没有一个知识体系或者文件分类,希望在CSDN提高自己整理知识点以及文件分类管理的能力;
- 是我这篇文章的网址1,我在试下Markdown的”[1]”标注功能。
Mysql数据库涉及的算法
- 二叉树: 使用二叉树添加索引,极端情况下存1~6,它是一个单边,得查找6次才找到;
- 红黑树:相比较二叉树,有自平衡的功能, 存1~6,得4次才找到,数据量大的话数据深度很深;
- hash算法:定位式查找,一次查询就可以找到,但是不适用数据的排序功能;
- Btree :相比较红黑树的深度,它的数据结构是横向扩展的,但是缺点是每个子节点存储了data;
- B+Tree:B+Tree 叶子节点才存储data,可以增加度,度一般会超过100,因此h非常小(一般为3到5之间)
(1)预读:磁盘一般会顺序向后读取一定长度的数据(页的整数倍)放入内存
(2)局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用
mysql存储引擎(针对于表)
-
MyISAM:MyISAM索引文件和数据文件是分离的
(1) MyISAM主键索引: B+Tree叶子节点存储的是 数据行的文件地址/文件指针
(2) MyISAM普通索引:另外的一个B+Tree叶子节点存储的是 数据行的文件地址/文件指针 -
InnoDB:InnoDB索引文件和数据文件是合在一起的
(1) InnoDB主键索引: B+Tree叶子节点存储的是 索引+数据(聚集索引)
(2) InnoDB非主键索引 : B+Tree叶子节点存储的是 主键
版权声明:本文为qq_34234008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。