独孤求败--之--InnoDB、MyISAM索引实现过程

MySQL现在最常用的存储引擎是MyISAMInnoDB(默认)

两者实现的底层原理都是B+Tree索引文件结构。

MyISAM索引实现过程解析:(非聚集)

MyISAM索引存储结构图

目标:上图以主键索引为例:想要查索引为50的那一条记录信息。
步骤如下:
1.cpu先去根节点拿数据到内存中查看,没有找到数据,去箭头1方向查找。
2.把非叶子结点的数据拿到内存中查看,也没有发现数据,应该去箭头2的方向查找。
3.在箭头2的叶子节点中发现了数据key50,而对应的data为0x77。
4.通过指针0x77,在应找到数据表中就能快速的找到索引为50的那一条记录。


InnoDB索引实现过程解析:(聚集)

在这里插入图片描述

InnoDB 索引的实现和MyISAM的不同点:InnoDB叶子节点不仅包含了索引,也包含了所有其他字段。


注意点:及相关经典面试题:
1.聚集索引与非聚集索引?

聚集索引:叶节点包含了完整的数据记录
非聚集索引:叶子节点包含索引和指针,指向的数据在另一个表中。

2.为什么InnoDB表必须有主键,而且推荐自增整型主键?

因为InnoDB本身就是按B+Tree组织的一个索引文件,所以一定要索引,主键是要帮我们存储整个表的索引结构和数据,所以一定要有主键。

因为B+Tree规定了节点数据是要依次递增的,而且整型数字比较节省空间,如果是随机索引的话,会引起节点的分裂,会消耗数据库性能,所以选择自增主键。也可以uuid作对比来说。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值