主要是四种:MyISAM、InnoDB、MEMORY、MERGE
1、MyISAM
不支持主外键、不支持事务、表锁 不适合高并发、只缓存索引,不缓存数据,表空间小,关注点在于性能,默认安装。
以查询、插入为主的应用都可以使用这个引擎。
支持三种不同的存储格式:静态表、动态表、压缩表
静态表:表中记录定长,优点是存储快,容易缓存,出现故障容易恢复,缺点是占用空间大(按照固定长度分配存储,字段端的会存在空格)
动态表:记录是可变长度,优点是节省空间,缺点是频繁的修改数据会产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能
压缩表:每个记录被单独压缩,访问开支小
2、InnoDB
支持主外键、支持事务、支持行锁支持高并发、索引数据都缓存、需要表空间大、关注点在事务、默认是安装的。
3、MEMORY
使用存储在内存中的内容来创建表,因此访问非常快,并且默认使用Hash索引,但是一旦服务关闭,数据则会丢失,因为数据存放在内存中。每个MEMORY表只对应一个磁盘文件,格式是frm。
MEMORY的表可以是Hash索引页可以是b树索引,都有不同的使用范围。
hash索引的优点:
检索效率高,可以一次定位,查询效率高于b树。
hash索引的缺点:
对于like等范围查找索引无效。
MEMORY主要用于那些内容变化不频繁的代码表,或者是中间表,便于高效的对结果进行统计分析。
4、MERGE
是一组MyISAM表的结合,这些表必须结构完全相同,MERGE表本身没有数据,对MERGE类型的表可以进行查询,更新,删除操作,这些操作实际上都是对内部的MyISAM表进行的。