Mysql存储引擎MyISAM和InnoDB

Mysql索引数据结构–B+Tree

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

1、B+ Tree每个节点可以包含更多的节点,这个做的原因有两个,第一个原因是为了降低数的高度,第二个是为了将数据范围化为多个区间,区间越多,索引越快
2、非叶子节点储存Key,叶子节点存储key和数据
3、叶子节点两两指针相互连接(符合磁盘的预读特性),顺序查询性能更高

MyISAM
MyISAM是MySQL默认的存储引擎。MyISAM不⽀持事务、也不⽀持外键,其优势是访问的速度快,对事务完整性没有要求或者以 SELECT、INSERT 为主的应⽤基 本上都可以使⽤这个引擎来创建表。

我们可以进入mysql文件中的data目录,选择一个数据库,查看存储在磁盘上的结构:
在这里插入图片描述
其中 .frm文件存储的是表结构
.MYI文件存储的是表的索引
.MYD文件存储的是数据文件

MyISAM索引文件和数据文件是分离的(非聚集)
可以看下图理解一下:
在这里插入图片描述
其中 Primary Key通过非叶子节点的区间,快速定位到叶子节点,取出value ,这个value就是.MYI中的一条索引数据,再通过这个索引指向的是.MYD的数据,通过一次磁盘IO 定位到那条数据,就去取出那条数据。

InnoDB
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能⼒的事务安全。但是对⽐MyISAM的存储引擎,InnoDB写的处理效率差⼀些,并且会占⽤更多的磁盘空间以保 留数据和索引

我们也可以去查看一下该表是如何存储在磁盘上的
在这里插入图片描述
.frm文件存储的是表结构
.bid文件存储的是索引和数据文件,相互对应的

InnoDB索引文件和数据文件是共同存储在.bid文件里面的(聚集)
可以看下图理解一下:
在这里插入图片描述
其中 Primary Key通过非叶子节点的区间,快速定位到叶子节点,其中叶子节点上存储的是索引+数据。就不需要在想MyISAM那样再进行一次磁盘IO了,直接取出即可。

为什么InnoDB必须要有主键推荐使用整型的自增列呢?
https://blog.csdn.net/a1_HelloWord/article/details/104341349

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值