1. MyISAM
-
MyISAM是Mysql5.5以前默认的存储引擎
-
具有独立的索引文件,所以查询的性能比较高
-
MyISAM的存储文件有三个,后缀名分别是.frm(存储表结构,每个存储引擎都有),MYD(数据文件),MYI(索引文件)
MyISAM 的存储文件.png -
不支持事务,不支持外键
-
支持全文检索,支持数据压缩(myisampack -b -f testmysam.MYI)
适用场景:
- 非事务型应用(报表系统、日志系统)
- 空间类应用(GIS,MyISAM是有空间函数、坐标等)
2. Innodb
- Innodb是Mysql5.5及以后默认的存储引擎
- 支持事务和外键
- Innodb的存储文件有两个,后缀名分别是.frm、.ibd(数据文件)。
- Innodb还有独立表空间和系统表空间之分,在Mysql5.6以前默认使用的是系统表空间,后缀名为.ibdataX(与之对应的还有独立表空间.ibd)。系统表空间因为只有一个文件,因此会产生IO的瓶颈,而独立表空间就可以同时向多个文件刷新数据了。
系统表空间还无法简单的收缩文件,独立表空间可以通过optimize来收缩文件。所以,推荐使用独立表空间。
适用场景:
- 需要支持事务的业务(例如转账,付款)
- 数据读写和更新都比较频繁的场景
3. Memory
- 具有文件存储引擎的特点,数据是保存在内存中的,也被称为HEAP存储引擎,Mysql重启数据全部丢失。
- 支持hash索引和btree(其实就是B+树)索引
- 所有字段都是固定长度varchar(10) = char(10)
- 不支持BloB和Text等大字段
-
使用的是表级锁
Memory存储引擎表.png
4. Ferderated
- 提供了访问远程MYSQL服务器上表的方法
- 本地不存储数据,数据全部放到远程服务器上
- 本地需要保存表结构和远程服务器的连接信息
- 使用场景:偶尔的统计分析和手工查询(某些游戏行业)
5. CSV
- CSV的存储文件有三个,后缀名分别是.frm,.csv,.csm,其中.frm是表的定义文件,.csv是文件数据存储内容,.csm是存储表的元数据如表状态和数据量
- 数据以文本方式存储在文件
- 适合做为数据交换的中间表、财务系统
网友评论