美文网首页
mysql索引结构

mysql索引结构

作者: DOB_8199 | 来源:发表于2021-03-30 18:52 被阅读0次

主要有以下四种


BTree索引

MySQL 使用的是 Btree 索引。

 
【初始化介绍】

一颗b 树,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块 1 包含数据项 17 和 35,包含指针 P1、P2、P3,

P1 表示小于 17 的磁盘块,P2 表示在 17 和 35 之间的磁盘块,P3 表示大于 35 的磁盘块。

真实的数据存在于叶子节点即 3、5、9、10、13、15、28、29、36、60、75、79、90、99。

非叶子节点只不存储真实的数据,只存储指引搜索方向的数据项,如 17、35 并不真实存在于数据表中。

【查找过程】

如果要查找数据项29,那么首先会把磁盘块 1 由磁盘加载到内存,此时发生一次 IO,在内存中用二分查找确定 29在 17 和 35 之间,锁定磁盘块 1 的 P2 指针,内存时间因为非常短(相比磁盘的 IO)可以忽略不计,通过磁盘块 1的 P2 指针的磁盘地址把磁盘块 3 由磁盘加载到内存,发生第二次 IO,29 在 26 和 30 之间,锁定磁盘块 3 的 P2 指针,通过指针加载磁盘块 8 到内存,发生第三次 IO,同时内存中做二分查找找到 29,结束查询,总计三次 IO。

真实的情况是,3 层的 b+树可以表示上百万的数据,如果上百万的数据查找只需要三次 IO,性能提高将是巨大的,如果没有索引,每个数据项都要发生一次 IO,那么总共需要百万次的 IO,显然成本非常非常高。

相关文章

  • 索引

    索引(Index)是帮助MySQL高效获取数据的数据结构,即索引是数据结构。MySQL索引的建立对于MySQL的高...

  • MySQL 索引分类

    MySQL索引的分类(根据数据结构) 索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL...

  • Mysql索引相关

    此文章主要回答以下问题:1 、索引数据结构演变2 、mysql索引数据结构 mysql索引的演变 线性结构:首先不...

  • MySQL索引背后的数据结构及算法原理

    参考来源 mysql索引分析 MySQL索引背后的数据结构及算法原理 MySQL中EXPLAIN命令详解 索引连接...

  • Mysql 相关

    MySQL索引 MySQL索引背后的数据结构及算法原理 覆盖索引和回表操作 MySQL性能优化 MySql表分区详...

  • MySQL索引底层实现原理 & MyISAM非聚簇索引 vs.

    MySQL索引底层实现原理 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构...

  • MySQL索引基础知识

    MySQL索引底层实现原理 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构...

  • mysql索引简介

    索引是什么 mysql官方定义: 索引(index)是帮助mysql高效获取数据的数据结构。 所以索引的本质:索引...

  • 面试总结

    mysql 索引的类型、索引的底层结构、索引失效的情况聚簇索引和非聚簇索引mysql的隔离级别, innerdb默...

  • mysql高级学习笔记

    什么是索引?索引(index) Mysql官方对索引的定义是:索引是帮助mysql高效获取数据的数据结构。所以, ...

网友评论

      本文标题:mysql索引结构

      本文链接:https://www.haomeiwen.com/subject/byusqltx.html