在MySQL数据库中使用不同的表类型是一种好习惯吗?

时间:2010-12-28 18:19:29

标签: php mysql database-design

我正在开发一个PHP游戏,当然我需要创建大约1000个不同的表来存储各种类型的数据。我听说,如果我错了,请纠正我,InnoDB对于因为与MyISAM的表锁定相反的行锁定而会更新很多的表更好。但是MyISAM选择速度更快。

我的问题是,我应该坚持使用一种表格类型,还是根据表格的需要混合搭配呢?

4 个答案:

答案 0 :(得分:6)

  

我的问题是,我应该坚持使用一种表格类型,还是根据表格的需要混合搭配呢?

混合可以。

MyISAM对于某些查询更快,并且支持FULLTEXTSPATIAL索引,而InnoDB是事务性的并且更加并发。

在我正在咨询的数据库项目中,出于这些目的,有一组表格。

答案 1 :(得分:2)

这取决于您的要求。如果你需要行级锁定,外键约束等,你应该去InnoDB,但如果你不需要它,你可以去MyISAM。一般来说,InnoDB在大多数情况下都是可行的,但没有什么可以阻止你为你的桌子选择多种类型的引擎, 这是MySQL的美丽

答案 2 :(得分:2)

是的,如果需要,可以将MyISAM和InnoDB混合在同一个数据库中,没有任何问题

答案 3 :(得分:0)

虽然你可以混合使用表格,但我完全坚持使用InnoDB。虽然MyISAM可以更快地进行某些查询,但如果进行适当调整,InnoDB通常会更快。如果通过主键查询,InnoDB将为MyISAM提供速度,因为InnoDB以主键顺序存储数据。二级索引的MyISAM可能更快。

MyISAM不支持事务,如果你有1000个表,你可能会在一个操作中更新几个表,所有这些更新都应该在一个事务中完成(或者在遇到重大问题时做好准备当游戏繁忙或数据库滞后时,并发就成了问题!)。

使用一种表类型也可以使数据库计算机上的内存管理更容易。 InnoDB获取用于缓存的专用RAM,而MyISAM依赖于OS文件系统缓存。

在任何类型的繁忙网站上使用MyISAM进行全文搜索都会让您感到悲伤。相反,请使用Sphinx Search