前言:
现在你们对“mysql实现树查询”大概比较注意,你们都需要学习一些“mysql实现树查询”的相关知识。那么小编同时在网上汇集了一些有关“mysql实现树查询””的相关知识,希望兄弟们能喜欢,大家快快来学习一下吧!mysql现在的默认存储引擎是innodb.innodb目前使用的索引是Btree索引.我们都知道索引可以加快数据的查询速度.但是索引也是数据.一个表中的索引数量需要合理控制.同时.索引树高度也要控制.因为索引树高度太高的话.会增加数据读取时的IO次数.那么我们怎么去查看索引树的高度呢?
使用这个命令查出我们想要看的索引的page_nomysql> select b.NAME, a.NAME, a.INDEX_ID, a.PAGE_NOfrom 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';+------------+-----------------+----------+---------+| NAME | NAME | INDEX_ID | PAGE_NO |+------------+-----------------+----------+---------+| test/t100w | GEN_CLUST_INDEX | 207 | 4 || test/t100w | idx | 208 | 41 |+------------+-----------------+----------+---------+2 rows in set (0.01 sec)
计算方法:
hexdump -s offset -n 10 xxxxx.ibd
offset = 41*16*1024+64
hexdump -s 671808 -n 10 /data/3306/data/test/t100w.ibd
解释:
offset是指数据页.我们查出来的idx索引的数据页是41号数据页,那么41号数据页是多少字节呢?
mysql的数据页默认是16kb
41*16*1024 计算出来offset的字节
那么后边的64字节是怎么算出来的呢?
那么我们就需要了解MySQL中一个数据页的组成了.
mysql中数据页默认的文件头部是38字节.然后是数据页的头部了.上图是数据页头部的组成.那么我们需要的是什么呢? 我们需要的是PAGE_LEVEL 在数据页头部中可以看到,PAGE_LEVEL之前有26字节.那么64就是 默认的文件头部加数据页头部的26字节得出来的.那么-n 10是什么意思呢?我们从数据页头部中可以看到.在数据头部的PAGE_MAX_TRX_ID之后的十个字节记录了 PAGE_LEVEL和PAGE_INDEX_ID 所以我们-n 10取出来的是索引树高度和索引的id
那么开始吧:
hexdump -s 671808 -n 10 /data/3306/data/test/t100w.ibd
标签: #mysql实现树查询