前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B+Tree索引体现形式体现在mysql两大存储引擎上是咋样的呢?

B+Tree索引体现形式体现在mysql两大存储引擎上是咋样的呢?

作者头像
名字是乱打的
发布2021-12-22 15:25:04
2640
发布2021-12-22 15:25:04
举报
文章被收录于专栏:软件工程软件工程
前导: Mysql数据是存储到硬盘上的,这里有两张用不同存储引擎存储的表有兴趣的朋友可以先打开自己的mysql硬盘库,查看一下存储的表数据结构

通过观察上图,我们发现

一 . Myisam

myisam有三个文件 其中他们共有的是都有frm文件,这是表定义文件 对于Myisam索引是保存到MYI文件中的,数据是保存在MYD文件中的为啥呢? 在Myisam中他的索引文件的叶子结点保存的是MYD数据文件中对应的地址值.

1.1多个索引Myisam中索引的结构

多个索引并列,没有主次

二 . 对于innnodb

innodb是以主键为索引来组织数据的存储的.(即使我们没有创建主键,innodb也会默认创一个隐式的)

它有两个文件,共有文件frm不说了,另一个idb文件实际上在它的叶子结点上是存了所有的真实数据

那么如果我们在主键之外再建立了一个索引,innodb是怎么组织数据存储的呢?

由上图可以知道,innodb中主键之外的索引会以辅助索引的形式存在,它的叶子结点中保存的是主键索引关键字的指向.

2.1 为啥innodb搞主键索引,辅助索引这种东西呢?

因为innodb默认,主键索引是最长用到的索引,为了某种程度上提高在主键上的效率,就这样搞了

2.2 innodb搞主键索引,辅助索引也就算了,为啥不模仿Myisam一样结点指向真正的数据地址,而非指向关键字呢?指向关键字还要第二次索引多麻烦啊?

innodb涉及时候主要考虑到如果数据区发生了迁移,主要我们主键没有发生变化,我们就不需要更改辅助索引了

2.3Myisam和innodb关于索引指向的对比
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 . Myisam
    • 1.1多个索引Myisam中索引的结构
    • 二 . 对于innnodb
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档