如何查看MySQL中索引树的高度?

奇怪的知识增加了

查看索引树的高度

查看索引的ROOT页

mysql> SELECT b.name, a.name, index_id, type, a.space, a.PAGE_NO      
FROM 
information_schema.INNODB_SYS_INDEXES a, 
information_schema.INNODB_SYS_TABLES b      
WHERE 
a.table_id = b.table_id AND a.space <> 0;

+----------------------------------------+----------------------------+----------+------+-------+---------+
| name                                   | name                       | index_id | type | space | PAGE_NO |
+----------------------------------------+----------------------------+----------+------+-------+---------+
| mysql/engine_cost                      | PRIMARY                    |       41 |    3 |    23 |       3 |
| mysql/gtid_executed                    | PRIMARY                    |       37 |    3 |    18 |       3 |
...
+----------------------------------------+----------------------------+----------+------+-------+---------+

查看索引在.ibd文件中的偏移量

PAGE_LEVEL在每个页的偏移量64位置处,占用两个字节

# 查看engine_cost表的PRIMARY索引偏移位置 
mysql> SELECT @@INNODB_PAGE_SIZE*3 + 64;
+---------------------------+
| @@INNODB_PAGE_SIZE*3 + 64 |
+---------------------------+
|                     49216 |
+---------------------------+
1 row in set (0.00 sec)

使用hexdump工具查看文件内容

[root@mysqltset mysql]# cd /data/mysql3306/data/mysql
[root@mysqltset mysql]# hexdump -s 49216 -n 10 -C engine_cost.ibd
0000c040 00 00 00 00 00 00 00 00 00 29 |.........)|
0000c04a
00 00 表示索引树高度为1
相应的
00 01 表示索引树高度为2
00 02 表示索引树高度为3

hexdump命令

hexdump主要用来查看“二进制”文件的十六进制编码
它能够查看任何文件,不限于二进制文件

选项

  • -n length:格式化输出文件的前length个字节
  • -C:输出规范的十六进制和ASCII码
  • -s:从偏移量开始输出

参考文档

查看 InnoDB表中每个的索引高度

你可能感兴趣的:(如何查看MySQL中索引树的高度?)