简述
在MySQL数据库中,数据使用各种不同的技术转储在文件或内存中,这种技术或功能就称为存储引擎。
查看存储引擎信息
查看MySQL中支持的存储引擎
show engines;
查看当前默认正在使用的存储引擎
show variables like ‘storage_engine‘;
常用存储引擎类型
MyISAM
不支持事务,也不支持外键。访问速度快。
磁盘文件
每个MyISAM存储引擎的表,在磁盘上存储为3个文件,文件名和表名相同,扩展名如下:
- .frm (存储表定义)
- .MYD (MYData,存储数据)
- .MYI (MYIndex,存储索引)
MyISAM 的表数据和索引数据是分开存储的。
适合的场景
- 读多的应用,如:博客,头条新闻
- 数据一致性要求不高的业务
InnoDB
支持事务,支持外键约束,
磁盘文件
- .frm (存储表定义)
InnoDB 的表数据与索引数据是存储在一起的,都位于 B+ 数的叶子节点上
适合的场景
- 需要事务支持,如:银行支付业务
- 数据一致性要求高的业务
Memory
Memory存储引擎将表的数据存放在内存中。每个MEMORY表实际对应一个磁盘文件,格式是.frm ,该文件中只存储表的结构,而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。MEMORY 类型的表访问非常地快,因为他的数据是存放在内存中的,并且默认使用HASH索引 , 但是服务一旦关闭,表中的数据就会丢失。
磁盘文件
每个 MEMORY 表实际只对应一个磁盘文件,格式是 .frm
。它只保存表结构
MERGE
MERGE 存储引擎是一组 MyISAM 表的组合,MERGE 表本身没有数据,对 MERGE 类型的表进行查询、更新、删除的操作,实际上是对内部的 MyISAM 表进行的。
磁盘文件
MERGE 表在磁盘上保留两个文件,一个是 .frm
文件存储表定义、一个是 .MRG
文件存储 MERGE 表的组成。
Archive
ARCHIVE存储引擎只支持INSERT和SELECT操作。
磁盘文件
- .frm 文件结构文件
- .arz 数据文件
适合场景
- 日志,流水等数据的归档业务场景
CSV
csv表允许以csv格式导入或转储数据
磁盘文件
- .csv结尾的文件是保存数据的文件
- .csv结尾的文件是元信息文件,保存表的状态及存储的数据量