MySQL数据库中一些常用的存储引擎及面向的数据库应用:
InnoDB存储引擎
支持事务,设计目标主要是联机事务处理(OLTP)的应用。
特点是:行锁设计、支持外键、并支持类似Orcale的非锁定表,即默认读取操作不会产生锁。是MySQL5.5.8版本依赖默认的存储引擎。
InnoDB通过使用多版本并发控制(MVCC)来获得高并发,并且实现了SQL标准的四种隔离级别,默认是Repeatable,同时使用一种称为next-key locking的策略来避免幻读的产生。除此之外,InnoDB存储引擎还提供了插入缓冲、二次写、自适应哈希索引、预读等高性能和高可用的功能。
MyISAM存储引擎
不支持事务、表锁设计、支持全文索引,主要面向一些OLAP数据库应用。此外,MyISAM存储引擎的缓冲池只缓存索引文件,而不缓存数据文件,这与大多数数据库不相同。
NDB存储引擎
NDB是一个集群存储引擎,其结构式share nothing的集群架构,因此能提供更高级别的高可用性。NDB存储引擎的特点是数据全部放在内存中,因此主键查找的速度极快,并且能够在线添加NDB数据存储节点以便提高数据库性能。因此,NDB存储引擎是高可用、高性能、高可扩展性的数据库集群系统,其面向的也是OLTP.
Memory存储引擎
Memory存储引擎中的数据存放在内存中,数据库重启或发生崩溃数据将消失。适合存储OLTP数据库应用中临时数据的临时表,也可作为OLAP数据库应用中数据仓库的维度表。Memory存储引擎默认使用哈希索引,而不是通常熟悉的B+树索引。
Infobright存储引擎
存储按列而非行,因此非常适合OLAP的数据库应用。
NTSE存储引擎
不支持事务,但提供压缩、行级缓存等特性。