索引树的规则 以及 mysql 的InnoDB引擎索引树的结构

本文深入探讨了MySQL中InnoDB存储引擎的数据存储方式,重点在于B+树的原理及其作为索引的优势。B+树通过将数据集中在叶子节点上,减少磁盘I/O操作,提高了数据检索效率。同时,介绍了索引的类型,包括B+树索引、Hash索引和全文索引,强调了B+树在大数据量场景下的适用性。

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

mysql B+树理解和 索引规则

  1. mysql的数据存储

因为内存的易失性。一般情况下,我们都会选择将 user 表中的数据和索引存储在磁盘这种外围设备中。但是和内存相比,从磁盘中读取数据的速度会慢上百倍千倍甚至万倍,所以,我们应当尽量减少从磁盘中读取数据的次数。另外,从磁盘中读取数据时,都是按照磁盘块来读取的,并不是一条一条的读。如果我们能把尽量多的数据放进磁盘块中,那一次磁盘读取操作就会读取更多数据,那我们查找数据的时间也会大幅度降低。如果我们用树这种数据结构作为索引的数据结构,那我们每查找一次数据就需要从磁盘中读取一个节点,也就是我们说的一个磁盘块。我们都知道平衡二叉树可是每个节点只存储一个键值和数据的。那说明什么?说明每个磁盘块仅仅存储一个键值和数据!那如果我们要存储海量的数据呢?
mysql 的最新默认inodb 存储 数据,innodb 底层二叉树结构,数据存储 的时候默认主键的 聚簇索引(主索引树,数据存储在此b+ 树上),B+ 树 是根据 查找优化下目前最优 存储方案 ,B+ 保留 二叉树的特点,但是层高 有限制,且节点不存储数据,数据最后存储在 最底层的(根结点上),也是所谓的数据页 ,这样做到,一部分数据存储在一个块上吗,利用磁盘读取一块数据可以做到不用多次I/O交互,加快查询速度。

  1. 索引
    索引分为B+ 、 Hash索引、全文索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值