一.个人资料
mysql索引的数据结构是树,常用的存储引擎innodb采用b树。 这里是B Tree及其相关的
找棵树简单介绍。
二.各种检索树
1、二叉排序树(也称为二叉查找树) ) ) ) ) ) )。
两股排序树是最简单的搜索树,具有特点。
a )是二叉树
b )左侧子树的所有节点的值都小于其父节点的值,右侧子树的所有节点的值都大于其父节点的值。
2、平衡二叉树(也称为AVL树) )。
在平衡二叉树是二叉树的基础上,限制树的深度可以减少查找比较的次数,
特点:
a )是二叉树
b )左侧子树的所有节点的值小于其父节点的值,右侧子树的所有节点的值大于其父节点的值;
c )左边子树与右边子树深度差在-1、0、1以内。 否则,旋转调整子树。
3、B-树(B-树)。
B-树是多重平衡搜索树,相对于平衡二叉树,与父节点直接的子节点的数量不再限定于2,
通过指定m (自定义),可以保存更多节点,而不会增加树的深度。
-树通常用于文件系统。
特点:
a )树中的每个节点最多有一个m (自定义)子节点。
b )如果根节点不是叶节点,则至少有两个子节点;
c )除根节点外的所有非叶节点,至少m/2取子节点整体;
d )父节点下最左边子树的所有节点的值都小于父节点的最小值,
最右边子树的所有节点的值都大于父节点的最大值,
其余中间子树的所有节点的值都在指针父节点两侧的值上;
e )所有叶子的节点在同一层
注意:所有节点都有值
4、b树(b树) )。
b树是B-树变化,对于B-树,叶节点的值包含所有的值,所有的父节点的值是重复叶节点的值,
父节点只起到索引检索的作用,同时叶子节点也构成了有序的链表。
在mysql中,存储引擎是innodb的索引,数据结构是b树。
特点:
a )具有m个子节点的父节点中有m个关键字;
b )所有叶节点包含所有关键字(值),从小到大依次构成链表;
c )所有非叶节点充当索引,且节点仅包括子树中所有节点的最大值;
d )所有叶子的节点都在同一层
注:叶子节点包含所有关键字(值)。
5、B*树(B*树)。
B*树是b树的一个变体,在b树中添加了指向同一非叶节点的指针。 也就是说,同一非叶节点也构成了链表。
三.总结
如上所述,上述各种搜索树是相互关联的。
mysql中归结为innodb索引是像集群索引那样采用b树,用主键收集数据,采用b树来实现的
这是索引,也是mysql的数据存储结构。 叶节点包含所有数据,而非叶节点仅用作索引(
如果未定义主键,innodb将主键隐式定义为群集索引。)。
有关更多有关MySQL的技术文章,请参阅MySQL教程部分。