文章目录
- 1、存储引擎概述
- 2、MyISAM存储引擎
- 3、InnoDB存储引擎
- 4、MEMORY存储引擎
1、存储引擎概述
什么是存储引擎?
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。存储引擎这个名字只有在MySQL中存在。(Oracle中又对应的机制,但是不叫作存储引擎。Oracle中没有特殊的名字,就是"表的存储方式")
查看当前mysql支持的存储引擎?
show engines

2、MyISAM存储引擎

MyISAM这种存储引擎不支持事务。
MyISAM是mysql最常用的存储引擎,但是这种引擎不是默认的。
1、MyISAM采用三个文件组织一张表:
- xxx.frm(存储格式的文件)
- xxx.MYD(存储表中数据的文件)
- xxx.MYI(存储表中索引的文件)
2、MyISAM表还支持三种不同的存储格式
- 静态表(默认): 字段都是非变长的(每个记录都是固定长度的)。存储非常迅速、容易缓存,出现故障容易恢复;占用空间通常比动态表多。
- 动态表: 占用的空间相对较少,但是频繁的更新删除记录会产生碎片,需要定期执行optimize table或myisamchk -r命令来改善性能,而且出现故障的时候恢复比较困难。
- 压缩表: 使用myisampack工具创建,占用非常小的磁盘空间。因为每个记录是被单独压缩的,所以只有非常小的访问开支。
3、优缺点和使用场景
- 优点: 可被压缩,节省存储空间。并且可以转换为只读表,提高检索效率
- 缺点: 不支持事务
- 使用场景:如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。
3、InnoDB存储引擎
InnoDB是MySQL5.5之后的默认存储引擎

InnoDB管理的表具有以下特点:
- 每个InnoDB表在数据库目录中以 .frm 格式文件表示
- InnoDB表空间tablespace被使用于存储表的内容
- 提供一组用来记录事务性活动的日志文件
- 用COMMIT提交、SAVEPOINT及ROLLBAC回滚事务处理
- 提供全ACID兼容
- 在MySQL服务器崩溃后提供自动回复
- 多版本(MVCC)和行级锁定
- 支持外键及引用完整性,包括级联删除和更新
InnoDB优缺点
优点: 支持事务、行级锁、外键等。这种存储引擎数据的安全得到保障。
缺点:相比较于MyISAM,写的处理效率差一点,并且会占用更多的磁盘空间来存储数据和索引,为重量级。
4、MEMORY存储引擎

MEMORY管理的表具有以下特点:
- 在数据库目录内,每个表均以 .frm 格式的文件表示
- 表数据及索引被存储在内存中。
- 表级锁机制
- 不能包含TEXT或BLOB字段
优点: 查询速度最快。
缺点: 数据库服务一旦关闭,数据就会丢失,比如:重启或计算机关机等等,另外对表的大小有限制
应用场景: 如果需要很快的读写速度,对数据的安全ing要求较低,可以选择MEMORY。
















