溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣使用mysql innodb查看索引高度

發(fā)布時間:2021-09-13 16:21:44 來源:億速云 閱讀:326 作者:柒染 欄目:MySQL數(shù)據(jù)庫

這期內(nèi)容當中小編將會給大家?guī)碛嘘P怎樣使用mysql innodb查看索引高度,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

首先獲取表上的索引情況

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)

接下來要用到操作系統(tǒng)命令hexdump,以十六進制查看文件

語法

hexdump [選項] [文件]...

選項

-n length 只格式化輸入文件的前l(fā)ength個字節(jié)。
-C 輸出規(guī)范的十六進制和ASCII碼。
-b 單字節(jié)八進制顯示。
-c 單字節(jié)字符顯示。
-d 雙字節(jié)十進制顯示。
-o 雙字節(jié)八進制顯示。
-x 雙字節(jié)十六進制顯示。
-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。

操作系統(tǒng)上十六進制轉十進制:

[root@mdb01 ming]# echo $((0x47))  
71
[root@mdb01 ming]# echo $((0x0190))
400

9001的讀取順序,應該是按照兩位為一組,倒著讀,那么也就是01 90

上述就是小編為大家分享的怎樣使用mysql innodb查看索引高度了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI