mysql innodb的索引基本入门

innodb数据的存储位置
查看数据存放位置show variables like '%datadir%'
例如在mac系统上在这个位置/usr/local/var/mysql

.ibd文件

innodb查看工具

安装 gem install innodb_ruby
innodb_ruby
innodb_space

参考:https://www.yuque.com/yinjianwei/vyrvkf/ei2evb

二分查找

二叉树

B+树

空间换时间

B+树
所有的记录都存储在叶子节点上

在这里插入图片描述

在数据库中,B+Tree 的高度一般都在2~4层,这也就是说查找某一键值的行记录时最多只需要2到4次 IO,2~4次的 IO 意味着查询时间只需0.02~0.04秒(假设 IOPS=100,当前 SSD 可以达到 50000IOPS)。

IOPS(Input/Output Operations Per Second)是一个用于电脑存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数。

把磁盘的数据读入内存,然后在内存中进行判断。使用磁盘的好处就是可以存放大量数据。
在这里插入图片描述
第一次磁盘IO
在这里插入图片描述
第二次磁盘IO
在这里插入图片描述

第三次磁盘IO
在这里插入图片描述

所有的记录都存储在叶子节点上
叶子结点本身依关键字的大小自小而大顺序链接。

理解为什么要减少磁盘IO次数

所以B+树在磁盘中是怎么存储的?

参考https://www.cnblogs.com/tongongV/p/10952102.html
假设有如下的表
在这里插入图片描述

在这里插入图片描述
查找:假设要查找数据项6
1.把根节点由磁盘块0加载到内存,发生一次IO,在内存中用二分查找确定6在3和9之间;
2.通过指针P2的磁盘地址,将磁盘2加载到内存,发生第二次IO,再在内存中进行二分查找找到6,结束。

猜你喜欢

转载自blog.csdn.net/lineuman/article/details/114710233
今日推荐