MyISAM与InnoDB的区别

参考答案

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—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧