十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这期内容当中小编将会给大家带来有关怎样使用MySQL innodb查看索引高度,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
香格里拉网站建设公司创新互联,香格里拉网站设计制作,有大型网站制作公司丰富经验。已为香格里拉上千多家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的香格里拉做网站的公司定做!
首先获取表上的索引情况
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 and b.name='ming/test02'; +-------------+---------------+----------+------+-------+---------+ | name | name | index_id | type | space | PAGE_NO | +-------------+---------------+----------+------+-------+---------+ | ming/test02 | PRIMARY | 71 | 3 | 44 | 3 | | ming/test02 | idx_test02_c2 | 400 | 0 | 44 | 39 | +-------------+---------------+----------+------+-------+---------+ 2 rows in set (0.85 sec)
type:
0 是非唯一二级索引。
3是聚簇索引。
1是automatically generated clustered index (GEN_CLUST_INDEX
);
2是unique nonclustered index;唯一的非聚簇索引
32是全文索引。
查询innodb页的大小
mysql> show global variables like 'innodb_page_size'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | innodb_page_size | 16384 | +------------------+-------+ 1 row in set (0.67 sec)
接下来要用到操作系统命令hexdump,以十六进制查看文件
语法
hexdump [选项] [文件]...
选项
-n length 只格式化输入文件的前length个字节。 -C 输出规范的十六进制和ASCII码。 -b 单字节八进制显示。 -c 单字节字符显示。 -d 双字节十进制显示。 -o 双字节八进制显示。 -x 双字节十六进制显示。 -s 从偏移量开始输出。 -e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:'a/b "format1" "format2"'。
查看索引高度
[root@mdb01 ming]# hexdump -s 49216 -n 10 ./test02.ibd 000c040 0200 0000 0000 0000 4700 000c04a [root@mdb01 ming]# hexdump -s 639040 -n 10 ./test02.ibd 009c040 0200 0000 0000 0000 9001 009c04a
指定的偏移量的计算公式是page_no * innodb_page_size + 64。
49216 = 3 * 16384 +64.
PAGE_LEVEL 的值为 0200,表示这棵二级索引树的高度为 3(2+1)。
后面的4700和9001是索引的index_id。
操作系统上十六进制转十进制:
[root@mdb01 ming]# echo $((0x47)) 71 [root@mdb01 ming]# echo $((0x0190)) 400
9001的读取顺序,应该是按照两位为一组,倒着读,那么也就是01 90
上述就是小编为大家分享的怎样使用mysql innodb查看索引高度了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。