博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何知道btree树的高度
阅读量:6961 次
发布时间:2019-06-27

本文共 1527 字,大约阅读时间需要 5 分钟。

来自网络,总结到这里:

当我想看btree树高度的时候,筛选出来这篇文章"",知道了高度的算法是这个公式:但是里面又提高t和出度有关系,那么这个出度怎么算呢?为此我又搜索到了这里:"", d越大索引的性能越好,而出度的上限取决于节点内key和data的大小:

dmax=floor(pagesize/(keysize+datasize+pointsize))

floor表示向下取整。

,但是没有一个明确的方法告诉我innodb的高度怎么看,我被老大说中了,“现在是一个快餐时代”,我也不例外,直到我看到这里:

通过下面的SQL语句可以查出某这表对应索引的Root页:

SELECT b.name, a.name, index_id, type, a.space, a.PAGE_NOFROM information_schema.INNODB_SYS_INDEXES a,information_schema.INNODB_SYS_TABLES bWHERE a.table_id = b.table_id AND a.space <> 0;或者:SELECT b.name, a.name, index_id, type, a.space, a.PAGE_NOFROM information_schema.INNODB_SYS_INDEXES a,information_schema.INNODB_SYS_TABLES bWHERE a.table_id = b.table_id AND a.space <> 0 and name='dbname\/tbname';

运行上述的SQL语句应该可以得到类似如下的结果:

其中(SPAE,PAGE_NO)就是索引的Root页。

关于上面的列都是什么意思?

 

有了这些信息就可以方便的定位啦,因为PAGE_LEVEL在每个页的偏移量64位置出,占用两个字节,通过hexdump这样的工具就可以快速定位到所需要的树高度信息:

root@test-1:~# hexdump -s 24640 -n 10 customer.ibd

00006040 00 02 00 00 00 00 00 00 00 47

查看customer表,24640表示的是3*8192+64(这里innodb_page_size,查看方法:

mysql -uroot -e"show global variables like 'innodb_page_size'";

设置为了8192,并非默认的16384),即第3个页偏移量64位置开始读取10个字节,但不是读取2个字节就可以了嘛?其实因为后面8个字节对应的是index_id,就是上图中看到的index为71的索引,这里PAGE_LEVEL为00 02,那么索引的高度就为3。

用同样的方法可以查看customer表中i_c_nationkey的索引高度:

root@test-1:~# hexdump -s 32832 -n 10 customer.ibd00008040 00 01 00 00 00 00 00 00 00 48

可以发现PAGE_LEVEL为00 01,表示这棵二级索引树的高度为2。

虽然通常来说索引树的高度为3~4层,但是极端情况下,比如数据量超级大,页比较小,如4K,那么高度也是可能破4的。

参考来源:

https://dev.mysql.com/doc/refman/5.6/en/innodb-sys-indexes-table.html 

转载于:https://www.cnblogs.com/sunss/p/5632976.html

你可能感兴趣的文章
完整安装模式下配置windows server 2008[为企业部署Windows Server 2008系列二]
查看>>
paramiko 堡垒机
查看>>
Git 概述
查看>>
Flash Builder生成asdoc格式的帮助文档
查看>>
分享实录 | 第四范式程晓澄:机器学习在推荐系统中的应用
查看>>
测试服务器响应时间
查看>>
Windows Server 2003的安装
查看>>
人物摄影构图 突出人物的取景方法(上)
查看>>
xm console无法联接guest问题的解决
查看>>
实现F5后端服务器访问
查看>>
一步一步SharePoint 2007之一:安装SharePoint
查看>>
[MySQL FAQ]系列 -- 数据不算大,备份却非常慢
查看>>
Server Develop (七) Linux 守护进程
查看>>
Android requires compiler compliance level 5.0. Please fix project properties.错误
查看>>
如何从两个List中筛选出相同的值
查看>>
几个软件研发团队管理的小问题
查看>>
android112 c代码打印日志,c反编译调用java
查看>>
C# 正则表达式学习
查看>>
py excel 文本化
查看>>
cctype,string,vector
查看>>