MySQL InnoDB Engine--主鍵索引非葉子節點數據存儲


測試表信息

1、測試表結構

CREATE TABLE `schedule` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `task_id` int(11) NOT NULL,
  `first_run_time` datetime NOT NULL,
  `end_run_time` datetime DEFAULT NULL,
  `next_run_time` datetime DEFAULT NULL,
  `run_interval` int(11) DEFAULT NULL,
  `time_unit` tinyint(4) NOT NULL,
  `status` tinyint(4) NOT NULL,
  `schedule_config` text NOT NULL,
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `task_id` (`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1214 DEFAULT CHARSET=utf8

2、測試表數據

當前測試表中有681條數據,每個數據頁16KB,該表ibd文件為176KB(11個數據頁)

3、查看索引的根節點數據頁

SELECT T1.* 
FROM  information_schema.INNODB_SYS_INDEXES AS T1 
INNER JOIN information_schema.INNODB_SYS_TABLES AS T2 
ON T1.TABLE_ID = T2.TABLE_ID 
WHERE T2.NAME LIKE 'test/schedule';

+----------+---------+----------+------+----------+---------+-------+-----------------+
| INDEX_ID | NAME    | TABLE_ID | TYPE | N_FIELDS | PAGE_NO | SPACE | MERGE_THRESHOLD |
+----------+---------+----------+------+----------+---------+-------+-----------------+
|     1559 | PRIMARY |      669 |    3 |        1 |       3 |   658 |              50 |
|     1560 | task_id |      669 |    2 |        1 |       4 |   658 |              50 |
+----------+---------+----------+------+----------+---------+-------+-----------------+

 

根節點數據分析

根據主鍵根節點數據頁編號,通過Hex Editor查看ibd文件,可以找到該頁數據為:

00 10 00 11 00 0e 80 00 00 46 00 00 00 05 
00 00 00 19 00 0e 80 00 00 e3 00 00 00 06 
00 00 00 21 00 0e 80 00 02 9a 00 00 00 07 
00 00 00 29 00 0e 80 00 03 a5 00 00 00 08 
00 00 00 31 ff ba 80 00 04 79 00 00 00 09

整理后信息為:

每條記錄使用4字節空間存放子節點數據頁上存放的主鍵最小值
80 00 00 46 = 70
80 00 00 e3 = 227
80 00 02 9a = 666
80 00 03 a5 = 933
80 00 04 79 = 1145
主鍵ID在[70,227)的記錄88條,在[227,666)的記錄181條,在[666,933)的記錄182條,在[933,1145)的記錄182條,在[1145,N)的記錄為48行。

每條記錄的最后4各字節存放對應數據頁的頁編號,主鍵索引的葉子節點數據存放於05/06/07/08/09五個數據頁上,主鍵索引根節點頁編號為03,task_id索引的所有數據存放於頁編號04的數據頁。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM