MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guidegit

一 MyISAM

1.1 MyISAM简介

MyISAM是MySQL的默认数据库引擎(5.5版以前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,并且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,并且最大的缺陷就是崩溃后没法安全恢复。不过,5.5版本以后,MySQL引入了InnoDB(另外一种数据库引擎)。github

下面这张图只是想表达的意思是如今大多数时候咱们使用的都是InnoDB存储引擎,可是在某些状况下使用MyISAM更好,好比:MyISAM更适合读密集的表,而InnoDB更适合写密集的的表。 在数据库作主从分离的状况下,常常选择MyISAM做为主库的存储引擎。
5.5版本以后,MySQL引入了InnoDB面试

1.2 MyISAM特色

  • 不支持行锁(MyISAM只有表锁),读取时对须要读到的全部表加锁,写入时则对表加排他锁;
  • 不支持事务
  • 不支持外键
  • 不支持崩溃后的安全恢复
  • 在表有读取查询的同时,支持往表中插入新纪录
  • 支持BLOB和TEXT的前500个字符索引,支持全文索引
  • 支持延迟更新索引,极大地提高了写入性能
  • 对于不会进行修改的表,支持 压缩表 ,极大地减小了磁盘空间的占用

补充概念:数据库

相关文章
相关标签/搜索