InnoDB存储引擎
- 场景:面向在线事务处理(OLTP)的应用
- 特点:支持事务,行锁设计、支持外键,并支持类似于Oracle的非锁定读,即默认读取操作不会产生锁
- 重点:从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎
MyISAM存储引擎
- 场景:主要面向一些OLAP数据库应用
- 特点:它的缓冲池只缓存(cache)索引文件,而不缓冲数据文件
- 不支持事务、表锁设计,支持全文索引,MySQL 5.5.8版本之前MyISAM存储引擎是默认的存储引擎(除Windows版本外)
NDB存储引擎
- 特点:数据全部放在内存中,主键查找的速度极快,通过添加NDB数据存储节点(Data Node)可以线性地提高数据库性能,是高可用、高性能的集群系统
- 缺点:连接操作(JOIN)是在MySQL数据库层完成的,而不是在存储引擎层完成的。复杂的连接操作需要巨大的网络开销,因此查询速度很慢
Memory存储引擎
- 场景:适合用于存储临时数据的临时表,以及数据仓库中的纬度表
- 特点:表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失
- 重点:默认使用哈希索引,而不是我们熟悉的B+树索引
- 缺点:只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型。存储变长字段是按照定常字段(char)的方式进行的,会浪费内存
Archive存储引擎
- 场景:存储归档数据,如日志信息
- 特点:只支持INSERT和SELECT操作
- 重点:使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能
Maria存储引擎
- 目标:取代原有的MyISAM存储引擎
- 重点:支持缓存数据和索引文件,应用了行锁设计,提供了MVCC功能,支持事务和非事务安全的选项,以及更好的BLOB字符类型的处理性能
- 特点:开发者是MySQL的创始人之一的MichaelWidenius
笔记《Mysql技术内幕》