为什么千万级别的数据,只需要3层树高就可以? 树高是4的话,有3次IO。 如图,下面的图的树高是4,IO次数就是3.(因为根节点已经被缓存了,所以IO次数就是4-1=3) 因为非叶子节点只存储指针,而每个节点属于一次io,一次io有16k,3次io就可以存有千万级别的数据对应的指针

这个点不是很理解?

疑问1:【磁盘IO次数=树的高度】还是【磁盘IO次数=树的高度-1 】 ?

读取每次节点,都相当于一次的磁盘IO,搜索整棵树,路径长度为树高,磁盘IO次数=树的高度,树高越矮,磁盘IO次数越少,性能就越高。 ​ 比如树高=4,经历了3次磁盘IO,因为mysql会把根节点(最上面的非叶子节点叫根节点)缓存起来,所以树高为4的话,磁盘IO次数为3。

所以根节点被缓存起来后,树高就变成3,io次数也是3,所以磁盘IO次数=树的高度?

疑问2:为什么树高=4,只经历了3次IO? 因为根节点被缓存起来了,所以树高就变成3了,IO次数也就变成3了。

问题:那第一次查询的时候,树的根节点应该还没被缓存起来,所以树高=4,IO次数也是4吗?

小白搞不太清楚。 请各位大佬指点迷津。

好文阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。
大家都在看: