以前并不在意这个问题,最近深度优化客户的国外站点,被问到了才解释下,所以顺便记录吧。

先说结论:

mysql 5.6以下并且数据库小很少用到选择:myisam

  • 比如:纯展示网站,偶尔才更新几篇文章。

mysql 5.6及以上或者数据库大频繁使用选择:innodb

  • 比如:企业站,资源站,反正经常更新的网站。

基本涉及高并发等数据,如果用的mysql数据库都采用的innodb,比如各种现代化电商,教育,新零售等系统。

现在高版本mysql默认已经走innodb是有很多原因的,具体更多的看官方介绍就行。

  • InnoDB有行级锁,MyISAM只有全表级锁。
  • InnoDB具有参照完整性支持外键(RDBMS)约束,MyISAM不支持(DMBS)。
  • InnoDB支持事务处理,可以提交和回滚,MyISAM没有。
  • InnoDB更可靠,可使用事务日志进行恢复,MyISAM恢复难度大。
  • InnoDB数据表损坏丢失的可能性更低.

有人说MyISAM读取速度快,但是它会产生很多缓存,并且只缓存.MYI文件中的索引页。

而InnoDB缓存索引页和数据页,且可以调整大小,当然InnoDB也有不足,就是需要更多的空间。

但是当你有一定的数据量了,自然也就不会担心这个问题的存在了。

当然还有个重点,mysql8.0已经没有查询缓存了,所以跟着官方走选择InnoDB准没错。