> 文章列表 > Mysql问题

Mysql问题

Mysql问题

1. B+树和B树区别,mysql为什么不使用B树

区别:

  1. 叶子节点和叶子节点的存储方式不同
  2. B树的非叶子节点既存储键值信息,也存储数据信息,而B+树的非叶子节点只存储键值信息。因此,B树的每个节点都包含数据信息,而B+树的数据信息只存储在叶子节点中。
  3. B+树的叶子节点之间通过指针连接成一个链表,而B树的叶子节点之间没有连接

为什么:

  1. B+树的查找性能更稳定,适合高并发的数据库系统。
  2. B+树的叶子节点之间通过指针连接成一个链表,可以支持范围查询和排序操作
  3. MySQL使用InnoDB存储引擎,该引擎默认使用B+树作为索引结构B+树可以更好地支持事务和并发控制

2. 红黑树特点,和二叉查找树区别

红黑树的特点

  1. 每个节点要么是红色,要么是黑色。
  2. 根节点是黑色的。
  3. 每个叶子节点(NIL节点,空节点)是黑色的。
  4. 如果一个节点是红色的,则它的子节点必须是黑色的。
  5. 从任意一个节点到其每个叶子节点的所有路径都包含相同数目的黑色节点。

红黑树和二叉查找树的区别

  1. 平衡性:红黑树是一种自平衡的二叉查找树,它能够自动调整树的结构,以保持树的平衡性。而二叉查找树没有自平衡的机制,如果插入或删除节点不当,可能会导致树的不平衡,从而影响查找效率。
  2. 节点颜色:红黑树中的节点可以是红色或黑色,而二叉查找树中的节点只有一个颜色。红黑树中的节点颜色是用来表示节点在树中的位置,以及在进行插入和删除操作时需要进行的旋转操作
  3. 插入和删除操作:红黑树在插入和删除节点时需要进行颜色变换和旋转操作,以保持树的平衡性。而二叉查找树只需要简单地插入或删除节点即可。
  4. 查找效率:红黑树的查找效率与二叉查找树相当,都是O(log n)。但是,由于红黑树能够自动调整树的结构,因此在插入和删除节点时,红黑树的效率要优于二叉查找树。

总之

总之,红黑树是一种自平衡的二叉查找树,它能够自动调整树的结构,以保持树的平衡性。红黑树和二叉查找树的区别在于平衡性、节点颜色、插入和删除操作、查找效率等方面。红黑树的特点是每个节点要么是红色,要么是黑色,从任意一个节点到其每个叶子节点的所有路径都包含相同数目的黑色节点。红黑树的自平衡操作包括左旋、右旋、插入操作和删除操作。

3. 为什么索引用 B+树

  1. 高效的查找性能:B+树的查找性能非常高效,因为它是一种多路平衡查找树,每个节点可以存储多个关键字和指针,可以快速定位到目标数据所在的叶子节点,从而实现高效的查找操作。
  2. 高效的范围查询:B+树的叶子节点之间通过指针连接成一个链表,这使得B+树在处理范围查询时非常高效。
  3. 更扁平化:B树或B+树每个节点可以存储更多的信息,使整个树结构更“扁平”,从根节点到叶子节点只要3 ~ 4次IO即可(一般B+树索引深度也就是3~4层),如果用二叉树则这颗树会非常深。(也解释为啥不能用二叉树)

4. 聊聊mysql事务,隔离级别(结合具体实例讲解)

借鉴:https://blog.csdn.net/ACE_U_005A/article/details/120112668