MySQL存储引擎

在学习存储引擎之前,我们先要搞明白一件事,存储引擎是用来形容表的,并不是用来形容数据库的,数据库中的表是存储在磁盘里的,不同的数据库存储的位置可能有所不同,但是MySQL一般存储在data目录下

1、MyISAM存储引擎

一张表,如果选择的是使用MyISAM存储引擎,那么它会在磁盘中产生三个文件,分别是后缀名为.frm .MYD .MYI。(其中.frm表示结构 .MYD表示数据 .MYI表示引擎索引)
在这里插入图片描述
MyISAM索引文件和数据文件是分离的,我们称之为非聚集索引

假设我们以字段col1作为索引,那么col1这一列存储在MYI文件中,其余存储在MYD文件中。data指向磁盘文件地址,执行查询的时候,它会跨越这两个文件

2、InnoDB存储引擎

如果你选择的是InnoDB存储引擎,那么一张表对应的是两个底层文件,后缀名分别是(.frm .ibd)
在这里插入图片描述
由于data里面存储的是表中对应一行的数据,所以我们称之为聚集索引

  • InnoDB表必须要有主键,这是由它的底层结构来实现的,mysql设计的表必须有B+树来组织。如果没有设置,mysql会选择某一列唯一的属性,它会生成rowid。
  • 推荐使用整型的自增主键,一是保证主键的唯一性,并且自增插入快,方便范围查询。二是方便按照B+树来构建索引时对比,三是存储空间更小
  • 如果一张表有多个索引,则会有多个b+树。辅助索引结构叶子节点存储的是主键值。为了保持一致性和节省存储空间

3、其他存储引擎

还有一些其他的存储引擎,mysql也是支持的,只是平时用的比较少,这里简单介绍

3.1 Archive引擎

Archive存储引擎只支持INSERT和SELECT操作,Archive引擎会缓存所有的写并利用zlib对插入的行进行压缩,所以比MyISAM表的磁盘IO更少。但是每次的SELECT查询都需要执行全表扫描。所以Archive表适合日志和数据采集类应用,这类应用做数据分析时往往需要全表扫描。或者在一些需要更快速的INSERT场合下也可以使用
在这里插入图片描述

3.2 Blackhole引擎

在这里插入图片描述

3.3 CSV引擎

在这里插入图片描述

3.4 Federated引擎

在这里插入图片描述

3.5 Memory引擎

在这里插入图片描述
在这里插入图片描述

3.6 Merge引擎

在这里插入图片描述

3.7 NDB集群引擎

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值