千万数据量,掌握MySQL索引底层原理将会拯救世界(3)

本文探讨了MySQL中B+树索引的实现,特别是在InnoDB存储引擎中的应用。B+树的节点大小为1页,通常为16k,这样的设计适合大部分企业的需求。在InnoDB中,主键索引和数据记录绑定,查询效率高于MyISAM。B+树的高度通常为1-3层,因此适用于千万级数据存储。同时,文章还强调了最左前缀原则在查询优化中的重要性。
摘要由CSDN通过智能技术生成

那么,MySQL中B+树的一个节点大小为多大呢?

这个问题的答案是“1页”,这里说的“页"是MySQL自定义的单位(其实和操作系统类似),MySQL的Innodb引擎中一页的默认大小是16k(如果操作系统中一页大小是4k,那么MySQL中1页=操作系统中4页),可以使用命令SHOW GLOBAL STATUS like 'Innodb_page size';查看。并且还可以告诉你的是,一个节点为1页就够了。

为什么一个节点为1页(16k)就够了?

解决这个问题,我们先来看一下MySQL中利用B+树的具体实现。

MySQL中MylSAM和innodb使用B+树

千万数据量,掌握MySQL索引底层原理将会拯救世界(3)

 

通常我们认为B+树的非叶子节点不存储数据,只有叶子节点才存储数据;而B树的非叶子和叶子节点都会存储数据,会导致非叶子节点存储的索引值会更少,树的高度相对会比B+树高,平均的I/O效率会比较低,所以使用B+树作为索引的数据结构,再加上B+树的叶子节点之间会有指针相连,也方便进行范围查找。

上图的data区域两个存储引擎会有不同。

MyISAM中的B+树

MYISAM中叶子节点的数据区域存储的是数据记录的地址

主键索引

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值