mysql存储引擎对比
其中,最常见的MyISAM和InnoDB存储引擎的对比如下:
| MyISAM | InnoDB |
默认存储引擎 | 5.5版本以前的默认存储引擎 | 5.5版本及以后的默认存储引擎 |
ACID事务支持 | 不支持 | 支持 |
查询效率 | 高 | 低 |
锁级别 | 表级锁定 | 行级锁定 |
外键 | 不支持 | 支持 |
全文类型索引 | 支持 | 不支持,可以使用插件扩展来支持 |
数据备份 | 每个数据表以文件形式存储,可以跨平台转移 | 所有数据表保存在同一数据文件中,需要备份数据文件和binlog文件 |
存储空间 | 可被压缩,存储空间较小 | 需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引 |
适用场景 | 不需要事务;以查询操作为主,更新操作不频繁 | 可靠性要求比较高,或者要求事务;需要执行大量的更新操作 |
其他细节:
1)MyISAM的AUTO_INCREMENT类型字段可以仅仅位于联合索引中,而不存在该字段的单独索引;InnoDB的AUTO_INCREMENT类型字段必须为该字段建立一个单独索引;
2)MyISAM保存有表行数,如果执行·select count(*) from table;·会直接取出该值;InnoDB不保存表行数,如前的查询会遍历数据表;
3)如果执行`delete from table;`,InnoDB不会重新建立新表,而是一行一行地删除,因此MyISAM效率更高;