MySQL 学习笔记 存储引擎对比篇



InnoDB:OLTP在线事务处理,行锁设计,支持外键,非锁定读,通过多版本并发控制(MVCC)来获得高并发性,实现了SQL标准的4种隔离级别,插入缓冲,二次写,自适应哈希索引,预读,使用聚集方式存储表中数据,每张表的数据都按逐渐的顺序存放,如果没有显式地指定主键,会生成一个6字节的ROWID作主键。 MyISAM:不支持事务/表锁,对一些OLAP在线分析处理操作速度快,可以使用myisampack来进行赫夫曼压缩,压缩后是只读的。
NDB Cluster:share nothing 的集群架构。数据全部放在内存中,主键查找速度极快,复杂的连接操作很慢。 Memory:使用哈希索引,所有数据存放在内存里,适用于临时表。只支持表锁,并发性能较差,不支持TEXT和BLOB。
Archive:只支持INSERT和SELECT,使用zlib算法压缩存储数据,适合存储归档数据,如日志。使用行锁来实现高并发的插入操作。 Federated:指向一个远处MySQL数据库服务器上的表。
*Maria:设计目标是取代MyISAM。缓存数据和索引文件,行锁设计,提供MVCC功能,支持事务,以及更好的BLOB处理性能。
MySQL各种存储引擎之间的比较