MySQL 索引用的什么数据结构了解吗?

MySQL 索引用的什么数据结构了解吗?
MySQL的默认存储引擎是InnoDB,它使用B+树结构的索引。
B+树的特点如下:
- B+树的索引结构中,只有叶子节点存储实际的数据记录,而非叶子节点只存储键值信息。
- 叶子节点之间通过双向指针进行连接,形成了一个有序的链表结构。
- 每个磁盘块包含多个数据项和指针,指针用于指示搜索方向。
在B+树索引结构中,重要的两点是:
- 磁盘块:最外层的方块表示一个磁盘块,每个磁盘块包含多个数据项(以粉色表示)和指针(以黄色/灰色表示)。例如,根节点磁盘块包含数据项17和35,并且有指针P1、P2和P3。P1指向小于17的磁盘块,P2指向17和35之间的磁盘块,P3指向大于35的磁盘块。实际数据存储在叶子节点中,如3、4、5...直到65。非叶子节点仅存储指向搜索方向的数据项,如17和35并不真实存在于数据表中。
- 叶子节点连接:叶子节点之间使用双向指针进行连接,形成了一个有序的双向链表。这使得在B+树索引中可以进行范围查询,因为叶子节点已按顺序链接。
通过B+树的索引结构,MySQL能够高效地进行数据查找和范围查询操作,提高查询性能和排序能力。