我已经阅读了关于InnoDB和MyISAM之间哪个更好的各种线索.似乎辩论是使用或其他.是否不可能同时使用两者,具体取决于表格?
这样做的缺点是什么?据我所知,可以在CREATE TABLE命令期间设置引擎.因此,经常读取的某些表可以设置为MyISAM,但需要事务支持的表可以使用InnoDB.
最佳答案
您可以在同一个数据库中同时拥有MyISAM和InnoDB表.你会发现,当有非常大的表时,MyISAM会导致表锁问题.这最终的作用是,它将整个表锁定为单个事务,如果您有许多用户使用您的网站,这非常糟糕.例如,如果您的用户在您的网站上搜索某些内容并且查询需要几分钟才能完成,那么在此期间没有其他用户可以使用您的网站,因为整个表都已锁定.
另一方面,InnoDB使用行级锁定,这意味着该行是在事务期间从表中锁定的唯一行. InnoDB在搜索时可能会变慢,因为它不提供像MyISAM这样的全文搜索,但是当你将它与MyISAM的表级锁定进行比较时,这不是一个大问题.如果您像许多大型网站一样使用InnoDB,那么您可以使用服务器端搜索引擎(如Sphinx)进行全文搜索.或者您甚至可以使用MyISAM表进行搜索,如f00建议的那样.我个人推荐InnoDB主要是因为行级锁定功能,还因为你可以通过许多其他方式实现全文搜索.
基本上,如果你有一个留言板应用程序有很多选择,插入和更新,InnoDB可能是一般合适的选择.
但是如果你没有构建类似的东西(或者注册用户的任何其他东西)并且你主要使用静态内容(或者更多的读取而不是写入),那么你可以使用MyISAM.