面试之mysql数据库

95 阅读1分钟

#mysql的InnoDB为什么使用B+树 1innodb引擎表文件和索引文件不分开的,表文件本身就是主键索引树; 2B+树是一颗多叉平衡树,查找是二分查找,查找效率,主键索引非叶子节点存储的是主键的值,叶子点存储的是数据,叶子又组成一个链表,对于范围查找来说,只需要找到首尾节点,对首尾节点组成链表进行遍历;一颗m阶B+树一个节点包含多个关键字,树的高度降低,减少了磁盘访问次数 #索引为什么不用二叉树 1一个节点里面只有一个关键字,一个节点只有两个子节点,高度高;树的一层对应一个磁盘块,树越高,磁盘访问次数越多,大大增加查询时间。 2二叉树有可能会退化为链表,查找时间复杂度为o(n) #什么是二叉树,二叉查找树,AVL,红黑树 1.一个节点只有两个子节点的树叫二叉树 2.x节点的左子树的所有节点都比x小,所有右子树的节点都比x大的二叉树叫做二叉查找树 3.二叉查找树的每个节点的左子树和右子树的高度相差不超过1叫做平衡二叉查找树(AVL) 4.红黑树是一颗特殊的AVL,具有4特点 1)根节点是黑色 2)红色节点的子节点必须是黑色的 3)每个节点不是红色就是黑色 4)一个节点到一个null引用的所有路径必须包含相同数目的黑色节点