文章目录
1.MySQL引擎概述
常用的三个引擎分别是Memory、MyISAM、InnoDB
- Memory:所有数据都存在内存中,数据处理速度快,但宕机则会丢失数据。
- MyISAM:5.1版本之前默认引擎,使用非聚簇索引,不支持外键,仅支持表锁。
- InnoDB:5.1版本之后默认引擎,使用聚簇索引,支持事务、外键、表锁和行锁、MVCC。
拓展:
- InnoDB引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)保证事务的原子性;
- InnoDB引擎通过锁机制、MVCC等手段来保证事务隔离性;
- 保证了原子性、持久性和隔离性,一致性才能得到保障。
关于聚簇索引和非聚簇索引,详情请移步06.MySQL索引
2.引擎的选择
Memory由于数据仅存在内存中,一旦崩溃无法恢复,不适合用作最底层的数据库;
而InnoDB支持事务,支持行锁,支持MVCC,相比MyISAM应用场景更为广泛,且MyISAM不支持崩溃后的安全恢复,因此InnoDB是首选。