MySQL的Innodb和mylsam和Memory存储引擎区别

MySQL的存储引擎(非聚集索引也叫稀疏索引)

image.png

一般常用的就是Innodb,mylsam和memory,下面对比这三种进行对比介绍:
存储引擎形容的数数据库的表级别的
在使用Navicat创建表格时候,就可以选择这个表格的存储引擎,记住,是表级别的
image.png

mylsam存储引擎

image.png

普及一下MySQL的基础知识:
在MySQL数据库创建的数据库,以及对应的表,在MySQL安装目录下的data目录下都能看到
比如MySQL数据库里面创建了lala,mya-mye这几个库

MySQL库状态

对应磁盘上面的存储位置

上图是不是就能够看出来这个存储的方式,然后点击进去就能够看到里面的对应的表
以点击进入lala数据库为例


image.png

其中db.opt里面存储的内容如下,主要是存储的是数据库的字符集


image.png

在lala数据库里面存储了三张表(lala(mylsam),test1(innodb),test2(innodb))

粉色代表的是mylsam存储引擎下表的磁盘存储方式(frm和MYD,MYI结尾三个文件)

绿色代表innodb存储引擎下表的磁盘存储方式(frm和ibd结尾两个文件)

  • frm存储的是这个表的结构,是framework框架的缩写
  • D结尾是data的意思,就是存储的是数据,大小为0表示这个表没数据
  • I就是index索引的简写
  • d结尾是即存储了数据也存储了索引
    image.png

mylsam存储引擎的MYI文件索引的存储的数据结构就如下图的B+树存储结构

image.png

MYD存储的就是下面的这个数据,他是随机存储的,打散了的

image.png

比如我们查找select * from table where Col=30这个数据,底层的数据走向是
先去MYI里面查找,因为里面存的是b+树,在内存中查得30,每一个节点设置的是16K,找到,然后找到这个数据在磁盘上面的位置,根据这个位置,就能够在磁盘上面快速定位到这个元素

innodb存储引擎(使用最多,聚集索引,也叫聚簇索引)

image.png

上图为Innodb的存储引擎的存出结果,他的叶子结点和mylsam存储引擎是不一样的,他的叶子结点放的是索引所在行的完整的数据结构,定位到索引元素,可以直接拿到这个文件就行,这个也就是innodb他的文件存储的是.fra和.ibd两个文件,因为他的索引和数据在ibd这两个文件.
聚集索引就是这个叶子结点包含了这一行的所有数据
非聚集索引就是mylsam的叶子结点那样,索引和数据分开存放,

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容