MYSQL 索引树高度计算
2022/6/1 2:51:48
本文主要是介绍MYSQL 索引树高度计算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、Mysql 5.7高度计算
1. 从视图查询计算索引树高度表的索引存储信息
mysql> SELECT b.name, a.name, index_id, a.PAGE_NO FROM information_schema.INNODB_SYS_INDEXES a join informattion_schema.INNODB_SYS_TABLES b on a.table_id = b.table_id where b.name='mirror/FLEX_RF_RESULT_2022_05_022'; +----------------------------------+-----------------------+----------+---------+ | name | name | index_id | PAGE_NO | +----------------------------------+-----------------------+----------+---------+ | mirror/FLEX_RF_RESULT_2022_05_02 | GEN_CLUST_INDEX | 110 | 3 | | mirror/FLEX_RF_RESULT_2022_05_02 | FLEX_RF_RESULT_PIDX01 | 111 | 4 | | mirror/FLEX_RF_RESULT_2022_05_02 | FLEX_RF_RESULT_PIDX02 | 112 | 5 | +----------------------------------+-----------------------+----------+---------+ 3 rows in set (0.00 sec)
index_id:索引的标识符。索引标识符在实例中的所有数据库中都是唯一的。
PAGE_NO:索引 B 树的根页码,比如为5,则为这个表是从page5 开始算起的
2.计算高度:
主要使用的命令为:hexdump
1)找到表的ibd文件
[root@mes_rf mirror]# hexdump -s 81984 -n 10 FLEX_RF_RESULT_2022_05_02.ibd 0014040 0200 0000 0000 0000 7000 001404a
-s 跳过多少开始计算page
-n 一共取多少字节,因为一个page_level(2字节),一个page_index_id(8字节)一共取十个字节
-s 81984=5*16*1024+64
5:代表从5以后开始计算(前面的0 1 2 3 4页不包含)
16 :一个页16KB
1024: KB和字节换算
64:一个page的前64字节不算
得到的结果:
0014040 0200 0000 0000 0000 7000
001404a
主要看0020代表索引树高度:因为mysql为16进制,所以0200代表:3层索引树,因为索引树从0算起,0 1 2 中间的0000 0000 0000 不用看,7000换算成10进制为112刚好和index_id一样,说明查询的是对的。
3.mysql8.0的索引树计算高度方法一样
区别:查询的视图表有区别
select b.NAME, a.NAME, a.INDEX_ID, a.PAGE_NO from information_schema.innodb_indexes as a join information_schema.innodb_tables as b on a.table_id=b.table_id where b.name='test/t100w';
其他计算方法一样
这篇关于MYSQL 索引树高度计算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-16MySQL资料:新手入门教程
- 2024-11-15MySQL教程:初学者必备的MySQL数据库入门指南
- 2024-11-15MySQL教程:初学者必看的MySQL入门指南
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程