MyISAM是MySQL的默认数据库引擎。MyISAM虽然性能优异,提供了全文索引、压缩、空间函数等诸多特点,但不支持事务和行级锁,最大的缺点是崩溃后无法安全恢复。,5.5版本后,MySQL引入InnoDB(事务性数据库引擎),MySQL 5.5版本后默认存储引擎为InnoDB。
大多数时候使用InnoDB存储引擎,但在某些情况下使用MyISAM也是合适的,比如密集阅读。
两者的对比:
1.是否支持行级锁:MyISAM只有表级锁(table-level locking),InnnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。
2.崩溃后是否支持事务和安全恢复:MyISAM强调性能,每次查询都是原子性的,执行速度比InnoDB快,但不提供事务支持。但InnnoDB提供高级数据库功能,如事务支持、外部键等。具有事务(commit)、回滚(rollback)以及崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe(ACID compliant))型表。
3.是否支持外键:MyISAM不支持,InnoDB支持。
4.是否支持MVCCCC:只有InnoDB支持。MVCC比简单的加锁更有效地处理高并发事务;MVCC只在READ COMMITEDREPEATABLE 两个隔离级别的TRAD工作;MVC可以使用乐观锁(optimistic)和悲观锁(pessimistic)锁来实现;MVCC在各种数据库中的实现并不统一。