InnoDB引擎
特点:支持事务,行锁设计,支持外键,默认支持读取操作不会产生锁
- InnoDB的表单独存放在一个独立的ibd文件
- 使用mvcc来获得高并发,实现了SQL的四种隔离级别,默认可重复读的级别,使用next-key-locking(间隙锁)的策略来避免幻读
- 提供了插入缓存、二次写、自适应哈希索引、预读等高性和高可用的功能
- 采用了聚集方式,每张表的存储按照主键的顺序存放,若是没用显示定义主键,会为每行生成一个6字节的rowid作为主键。
MyISAM引擎
特点:支持全文索引
- 不支持事务,表锁设计,支持全文索引。
- 缓冲池只缓存索引,不缓存数据文件。
- 由MYD和MYI组成, MYD用来存储数据文件,MYI用来存储索引文件
- 使用myisampack工具压缩数据文件,myisampack工具使用赫夫曼编码来压缩
NDB引擎
特点:集群存储引擎,数据全部放在内存中
- 连接操作(JOIN)是在MySQL数据库层完成,不是在存储引擎层完成。
- 可以通过添加NDB数据存储节点可以线性提高数据库性能
Archive引擎
特点:只支持INSERT和SELECT操作
- 使用zlib算法将数据行进行压缩后存储,很适合存储归档数据
- 利用行锁来实现高并发的插入操作,其本身并不是事务安全的存储引擎
Federated引擎
特点:支持缓存数据和索引文件,应用行锁设计,提供了mvcc功能,支持事务和非事务选项,更好的blob字符类型的处理性能