MySQL提供了多个不同的存储引擎,包括处理事务安全的引擎和处理非事务安全的引擎。MySQL8.0支持的存储引擎有InnoDB、MyISAM、Memory、Merge、Archive、CSV等。其中,最常用的引擎是前两个。
| 区别 | MyISAM | InnoDB |
|---|---|---|
| 锁 | 只有表级锁 | 表级锁和行级锁 |
| 事务及恢复 | 强调性能,每次查询具有原子性,其执速度比InnoDB快,但是不支持事务 | 提供事务支持、外部键等高级数据库功能。具有事务、回滚和崩溃修复功能的事务安全型列表 |
| 外键 | 不支持 | 支持 |
| MVCC | 不支持 | 支持,应对高并发事务,MVCC比单纯的加锁更高效;MVCC只在read、committed和repeatable read 两个隔离级别下工作;mvcc可以使用乐观锁和悲观锁来实现;各数据库中mvcc实现并不统一 |
| 聚簇索引 | 没有 | 支持 |
| 特性 | 有较高的插入、查询速度、但不支持事务;支持大文件的文件系统和操作系统上支持 | CPU效率极高,能处理巨大数据量; |