数据库
首页 > 数据库> > MYSQL 索引树高度计算

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'; 

 

其他计算方法一样

 

标签:FLEX,0000,高度,索引,RF,RESULT,MYSQL,id
来源: https://www.cnblogs.com/liuxiuxiu/p/16329634.html