一、InnoDB和MyISAM有什么区别?
InnoDB和MyISAM都是MySQL的存储引擎,MySQL在5.5之前默认使用MyISAM作为存储引擎,5.5之后默认使用InnoDB作为存储引擎,它们的区别主要是以下几点:
InnoDB | MyISAM | |
---|---|---|
事务 | 支持(基于MVCC和Next-Key Lock) | 不支持 |
索引 | 聚簇索引 | 非聚簇索引 |
外键 | 支持 | 不支持 |
锁支持 | 表锁、行锁 | 表锁 |
全文索引 | 不支持 | 支持 |
存储方式 | 索引和数据一起存储 | 索引和数据分开存储 |
使用场景 | 支持事务、频繁修改 | 查询为主 |
是否支持崩溃恢复 | 支持(基于redo log) | 不支持 |
读写性能 | CPU核数越多性能越好 | 跟CPU核数无关(读写不能并发) |