使用MySQL表类型,innodb?

时间:2010-12-28 13:09:41

标签: mysql

innodb或myisam?

继承我所拥有的:
1表,

ID(INT,自动增量,主键),名称(char(40)),然后是20 varchar(255)。 700万行。

多数民众赞成,只有一张桌子!

查询类型:(一切都基于id,每个查询只返回或更新1行,没有范围搜索或随机或任何花哨的东西)

SELECT(20个变种)FROM table1 WHERE id ='id';

UPDATE(20 varchars)FROM table1 WHERE id ='id';

每周一次批量删除,每天插入5,000次。有相同数量的更新和选择(每分钟约1000)

不幸的是,我目前没有基准设施,因此问题是,我应该根据需要使用哪种表类型?在我的案例中你选择的主要因素是什么?

4 个答案:

答案 0 :(得分:2)

我认为InnoDB是您需要的引擎。单独拥有交易功能是原因。表格的大小证明了这一选择。

答案 1 :(得分:2)

简而言之:MyISAM速度更快,但不支持“交易”。 INNODB为事务提供支持,但这种开销可能会使其减慢速度。

但请注意,INNODB out执行MyISAM for INSERT和UPDATES。因此,如果您花费更少的时间插入/更新数据以及更多时间选择它,MyISAM更可取(反之亦然)。

答案 2 :(得分:1)

另请注意,MyISAM会在执行更新时锁定整个表,而InnoDB只会锁定受影响的行。

我个人的理念是只在我需要全文搜索时使用MyISAM(我同意DrColossos有更好的搜索选项)。

答案 3 :(得分:0)

在我看来,MyISAM比InnoDB更快,现在它们的速度几乎相同。 MyiAM优于InnoDB的一个优点是支持全文索引,如果您计划使用搜索查询的全部功能,它可能会有所帮助。 对于其他任务,我建议InnoDB,您也可以根据您的要求在同一个数据库中使用它们。

关于MyISAM vs InnoDB的Stack OverFlow有很多讨论,这里是one of them