参考答案
MyISAM与InnoDB的区别:
- InnoDB 支持事务;MyISAM 不支持事务。
- InnoDB 支持行级锁;MyISAM 支持表级锁。
- InnoDB 支持 MVCC(多版本并发控制);MyISAM 不支持。
- InnoDB 支持外键,MyISAM 不支持。
- MySQL 5.6 以前的版本,InnoDB 不支持全文索引,MyISAM 支持;MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引。
- InnoDB 不保存表的总行数,执行 select count(*) from table 时。需要全表扫描;MyISAM 用一个变量保存表的总行数,查总行数速度很快。
- InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。辅助索引需要两次查询,先查询到主键,再通过主键查询到数据。主键太大,其他索引也会很大;MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针,主键索引和辅助索引是独立的。
总结:
- InnoDB 存储引擎提供了具有提交、回滚、崩溃恢复能力的事务安全,与 MyISAM 比 InnoDB 写的效率差一些,并且会占用更多的磁盘空间以保留数据和索引。
- MyISAM 不支持事务、也不支持外键,优势是访问的速度快。对事务的完整性没有要求、以 SELECT 和 INSERT 为主的应用可以使用这个存储引擎。
以上,是MySQL面试题【MyISAM与InnoDB的区别】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—