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

MySQL的默认存储引擎是InnoDB,它使用B+树结构的索引。

B+树的特点如下:

  • B+树的索引结构中,只有叶子节点存储实际的数据记录,而非叶子节点只存储键值信息。
  • 叶子节点之间通过双向指针进行连接,形成了一个有序的链表结构。
  • 每个磁盘块包含多个数据项和指针,指针用于指示搜索方向。

mysql-0a47bec7-1cf2-47d7-94e2-3cd82ce806c7.png

在B+树索引结构中,重要的两点是:

  1. 磁盘块:最外层的方块表示一个磁盘块,每个磁盘块包含多个数据项(以粉色表示)和指针(以黄色/灰色表示)。例如,根节点磁盘块包含数据项17和35,并且有指针P1、P2和P3。P1指向小于17的磁盘块,P2指向17和35之间的磁盘块,P3指向大于35的磁盘块。实际数据存储在叶子节点中,如3、4、5...直到65。非叶子节点仅存储指向搜索方向的数据项,如17和35并不真实存在于数据表中。
  2. 叶子节点连接:叶子节点之间使用双向指针进行连接,形成了一个有序的双向链表。这使得在B+树索引中可以进行范围查询,因为叶子节点已按顺序链接。

通过B+树的索引结构,MySQL能够高效地进行数据查找和范围查询操作,提高查询性能和排序能力。

标签: java, Java面试题, MySQL, Java问题合集, MySQL面试题, Java编程, Java问题精选, Java常见问题