您当前的位置: 首页 >  b树

星夜孤帆

暂无认证

  • 2浏览

    0关注

    626博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

B树和B+树

星夜孤帆 发布时间:2021-04-24 16:06:49 ,浏览量:2

一、B树

画图

二、B+树

三、页单位的作用

操作系统是一页一页从磁盘读数据的,操作系统1页=4KB,操作系统从磁盘里面取数据,最少可以取出4KB。

InnoDb的一页是等于16KB,这个值是可以改的,但是,尽量改为4的倍数。

对于这八条数据,都是存在我们的磁盘里的,假如现在有一条sql语句select * from t1 where a = 7;

一种思路,我们从磁盘里一个一个取出数据(每取一次涉及一次磁盘IO),取出来之后跟a=7比较,那么就需要7次磁盘IO,而磁盘IO相对于内存中运算是很耗时的,如果按照这种思路,肯定会慢死。

换个思路,刚才我们说到,InnoDB是按照页取数据的,每页是16KB。

而对于,我们这个表,有四个int类型,一个varchar类型,每个int类型4b,那它们总和近似也就20b。

InnoDB从磁盘取数据都是以页作为基本单位的,所以,它就可以一下子取出16000/20 = 800行数据,也就是说进行一次磁盘IO,就可以将这些数据加载到内存了,然后,在内存中再依次进行比较,找出我们想要的数据。

要知道内存中的计算速度,相对于磁盘IO操作,要快很多很多。

InnoDB会在插入的时候,对你的数据按照主键进行排序,

四、Mysql是如何选择最优索引的

一个InnoDB页,到底是如何持久化到磁盘里的?

一个InnoDB页,默认大小是16kb,而操作系统的一页默认是4Kb。现在要持久化InnoDB里的一页数据,操作系统可能就需要4次才能完成。

这样的话,很有可能这四次,就成功了两次,失败了两次,那么mysql是怎么解决这个问题的呢?

4.1 mysql的页结构 4.2 插入一条数据的过程 4.2.1 插入时按索引排序

当我们想往mysql插入数据的时候,它是怎么插入的呢?

4.2.2 页目录

P4

好文1,好文2,好文3,磁盘IO、参考、知乎、视频教程

关注
打赏
1636984416
查看更多评论
立即登录/注册

微信扫码登录

0.0403s