欢迎关注头条号:java小马哥
周一至周日下午三点半!精品技术文章准时送上!!!
精品学习资料获取通道,参见文末
一,索引数据结构红黑树,Hash,B+树详解
索引是帮助MySQL高效获取数据的排好序的数据结构
这篇文章主要写一下mysql的底层数据结构以及索引是怎么支撑千万级表的快速查找。直接进入在正题,比如说,我们现在以Col2作为查询条件写一个sql:select * from t where Col2=89 ,通过这样的一个sql可以发现,mysql在不使用索引的情况下。会进行全表扫描。会从第一条记录开始查询,一共进行6次查找,每次查找都会进行一次IO磁盘查找,这种效率是非常低的。那么Mysql显然如果不使用索引这种效率低到无法想象。所以就引入今天的话题,mysql的底层索引以及实现原理。先抛出结论Mysql底层使用的是B+树索引。
先不说B+树索引,咱们先一个一个分析。然后在讲为什么使用B+树。这样更有助于理解Mysql为什么使用B+数索引作为底层的索引数据结构,就针对刚才那条sql语句。
select * from t where Col2=89
1,我们知道在不使用索引的情况下要进行6次的磁盘IO。那么如果说使用索引的话,到底如何去选择合适的数据结构呢?先来分析一下,如果说使用二叉树数据结构,就像下图显示的这种叶子节点比非叶子节点小的就放在左面,如果大的就放在右面,基于这种数据结构,只要进行两次磁盘IO就可以轻松的去找到89这个磁盘的指针。先说一下二叉树的这种存储方式,首先是以Key-value的形式去存储的。34是或者89是Key,value就是对应的磁盘文件指针。通过value找到那一条数据。