MySQL的几种存储引擎

一。MySQL存储引擎介绍
存储引擎是一种插拔式的插件方式,提供了一套API标准;是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎;不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件)。
二。各种存储引擎
1.CSV存储引擎
在这里插入图片描述
数据存储以CSV文件
特点: 不能定义没有索引、列定义必须为NOT NULL、不能设置自增列 -->不适用大表或者数据的在线处理
CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排 -->数据安全性低
注:用vi或文本编辑器编辑之后,要生效使用flush table XXX 命令
应用场景: 数据的快速导出导入 表格直接转换成CSV

2.Archive存储引擎
压缩协议进行数据的存储,数据存储为ARZ文件格式
特点: 只支持insert和select两种操作 只允许自增ID列建立索引 行级锁 不支持事务 数据占用磁盘少(较其他存储引擎小的多,基本1:8-1:9的比例)
应用场景: 日志系统 大量的设备数据采集

3.Memory(heap)存储引擎
因为现在nosql已经非常成熟了,所以一般不会在生产上使用memory存储引擎。但是他是临时表默认的存储引擎。
数据都是存储在内存中,IO效率要比其他引擎高很多 服务重启数据丢失,内存数据表默认只有16M 特点: 支持hash索引,B tree索引,默认hash(查找复杂度0(1)) 字段长度都是固定长度varchar(32)=char(32) 不支持大数据存储类型字段如 blog,text(如果超过的话,会选择myisam引擎)
表级锁
应用场景: 等值查找热度较高数据 查询结果内存中的计算,大多数都是采用这种存储引擎 作为临时表存储需计算的数据

4.myisam存储引擎(MySQL8.0被废弃掉了)
Mysql5.5版本之前的默认存储引擎 较多的系统表也还是使用这个存储引擎 系统临时表也会用到Myisam存储引擎
特点: a,select count(*) from table 无需进行数据的扫描,他有一个专门计算数据的函数,InnoDB需要一行行的扫描,计算出来。
b,数据(MYD)和索引(MYI)分开存储
c,表级锁
d,不支持事务

myisam实现B+树的体现
在这里插入图片描述
数据和索引分别存储,不管用哪个存储引擎,都会生成一个.frm文件(表定义文件),数据保存在myd文件,索引保存在myi文件里面。在myisam里面,叶子节点的数据区保存的是.myd的内存地址,在.myi通过索引找到这条数据的内存地址,再通过这个地址去.myd里面找到对应的数据。

5.InnoDB
Mysql5.5及以后版本的默认存储引擎特点:
a.事务ACID
b.行级锁
c.聚集索引(主键索引)方式进行数据存储
d.支持外键关系保证数据完整性(不常用)

InnoDB在MySQL中的体现
在这里插入图片描述
只有.ibd和.frm两个文件,他的index和数据放在了一起,在InnoDB中,以主键为索引来组织数据的存储,如果没有明确指定一个主键(ID)索引,他会默认的生成一个隐藏的6byte的Int型的索引来作为他的主键索引,只是这个隐式的索引看不到而已。
注意:MySQL每个版本都是略微差异,比如在MySQL5.7之前都有.frm文件,而在mysql8.0之后就将该文件移除掉了。

三、各种存储引擎的对比:

在这里插入图片描述

上一篇:MySQL常见配置
下一篇:mysql-基于tree的索引的数据结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值