B+Tree不是B_Tree

B+Tree是BTree的一种优化,每个节点可包含更多节点,非叶子节点存储键,叶子节点存储键和数据并互相连接,提高顺序查询性能。在MySQL中,InnoDB引擎使用B+Tree,叶子节点直接存放数据,支持事务和行锁定;而MyISAM引擎则不支持事务,查询速度快,但不适用于需要事务安全的场景。InnoDB的索引创建会根据主键或唯一键,如果索引键非主键,需要通过回表找到对应记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

B+Tree

mysql索引数据结构–B+Tree

B+Tree是在BTree的基础之上做的一种优化,变化如下:

1、B+Tree每个节点可以包含更多的节点,这个做的原因有两个,第一个原因是为了降低树的高度,第二个原因是将数据范围变为多个区间,区间越多,数据检索越快

2、非叶子节点存储key,叶子节点存储key和数据

3、叶子节点两两指针相互连接(符合磁盘的预读特性),顺序查询性能更高

B+Tree

在这里插入图片描述
注意:在B+Tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。因此可以对 B+Tree 进行两种查找运算:一种是对于主键的范围查找和分页查找另一种是从根节点开始,进行随机查找。

数据库中的树实践

已知Mysql中又三种数据引擎:

  1. InnoDB

    InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎

  2. MyISAM

    MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物

  3. Memory

    MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问

主要说起其中两种数据库引擎

InnoDB — B+Tree 叶子节点直接放数据

在这里插入图片描述
注意:

1、InnoDB是通过B+Tree结构对主键创建索引,然后叶子节点中存储记录,如果没有主键,那么会选择唯一键,如果没有唯一键,那么会生成一个6位的row_id来作为主键

2、如果创建索引的键是其他字段,那么在叶子节点中存储的是该记录的主键,然后再通过主键索引找到对应的记录,叫做>>>回表

MyIASM----B+TREE

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值