美文网首页
如何查看MySQL中索引树的高度?

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

作者: 月饮沙 | 来源:发表于2021-06-11 15:54 被阅读0次

    奇怪的知识增加了

    查看索引树的高度

    查看索引的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中索引树的高度?

          本文链接:https://www.haomeiwen.com/subject/cvqveltx.html