常见的底层数据结构包括:
- 数组(Array):具有连续内存存储的数据结构,通过索引访问元素。
- 链表(Linked List):由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。
- 栈(Stack):一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。
- 队列(Queue):一种先进先出(FIFO)的数据结构,可以在队尾插入元素,在队头删除元素。
- 哈希表(Hash Table):使用哈希函数将键映射到数组索引的数据结构,提供高效的查找、插入和删除操作。
- 树(Tree):一种非线性的数据结构,包括二叉树、AVL树、B树等,用于高效的搜索和排序操作。
- 图(Graph):由节点和边组成的数据结构,用于表示各种关系和连接。
MySQL中的两个常见存储引擎 MyISAM 和 InnoDB 使用的索引数据结构是不同的。
- MyISAM引擎使用的索引结构是B+树(B+ Tree)。B+树是一种多路搜索树,具有平衡性和有序性,适合范围查询。在MyISAM引擎中,每个索引都是独立的B+树,包括主键索引和辅助索引。
- InnoDB引擎使用的索引结构也是B+树,但它还引入了聚簇索引(Clustered Index)。聚簇索引将数据行物理上按照索引顺序进行存储,使得按照索引的查询更加高效。在InnoDB引擎中,表数据行按照聚簇索引的顺序存储,而辅助索引则使用B+树结构。
总结起来,MyISAM引擎使用的是独立的B+树索引,而InnoDB引擎使用的是B+树索引,并且具有聚簇索引的特性。