我读过各种关于两者之间哪个更好的主题InnoDB
and MyISAM
。看来争论的都是使用还是其他。根据表的不同,是否不能同时使用两者?
这样做会有什么缺点?据我所知,发动机可以在CREATE TABLE
命令。因此,某些经常读取的表可以设置为MyISAM,但需要事务支持的表可以使用InnoDB。
您可以在同一个数据库中同时拥有 MyISAM 和 InnoDB 表。但您会发现,当表非常大时,MyISAM 会导致表锁定问题。这最终的作用是,它锁定单个事务的整个表,如果有很多用户使用您的网站,这非常糟糕。例如,如果您的用户在您的网站上搜索某些内容,并且查询需要几分钟才能完成,则在此期间没有其他用户可以使用您的网站,因为整个表被锁定。
另一方面,InnoDB 使用行级锁定,这意味着该行是事务期间表中锁定的唯一行。 InnoDB 的搜索速度可能会较慢,因为它不像 MyISAM 那样提供全文搜索,但与 MyISAM 的表级锁定相比,这并不是一个大问题。如果您像许多大型网站一样使用 InnoDB,那么您可以使用服务器端搜索引擎,例如Sphinx http://sphinxsearch.com用于全文搜索。或者你甚至可以使用 MyISAM 表来进行搜索,例如f00
建议。我个人推荐 InnoDB 主要是因为它的行级锁定功能,而且还因为您可以通过许多其他方式实现全文搜索。
基本上,如果您有一个包含大量选择、插入和更新的留言板应用程序,InnoDB 可能是通常合适的选择。
但是,如果您没有构建类似的东西(或注册用户的任何其他东西)并且您主要使用静态内容(或读取多于写入),那么您可以使用 MyISAM。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)