现在我们常用的MySQL存储引擎主要是两种:InnoDB and MyISAM。
1.MyISAM
执行效率高
不支持事务
不支持外键
每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
- .frm(存储表定义)
- MYD(MYData,存储数据)
- MYI(MYIndex,存储索引)
2.InnoDB(当前mysql的默认 存储引擎)
支持事务:提供具有提交、回滚和崩溃恢复能力的事务安全。
支持外键约束。
支持行级锁。
对比MyISAM存储引擎,InnoDB的写处理效率差一些以及会占用更多的磁盘空间来保留数据和索引。
在以下场合下,使用InnoDB是最理想的选择:
更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。
事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。
自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
外键约束。MySQL支持外键的存储引擎只有InnoDB。
支持自动增加列AUTO_INCREMENT属性。
3.MEMORY
采用的逻辑存储介质是系统内存。
最大的特点就是速度快。但是也因为在内存中,当mysqld守护进程崩溃时,所有Memory数据都会丢失。
Memory要求存储在数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。
还有一些其他类型的存储引擎。因本人实际开发中,未曾接触,暂不总结。