MySQL:InnoDB或MyISAM Engine :::哪个选择更好?

时间:2010-08-25 12:11:34

标签: mysql database

我有一个巨大的文件(约26 MB),大约有200列和30000条记录。我想将它导入数据库(InnoDB Engine)。我永远不会更新或删除记录。虽然我将在where子句中查询表格中的大量复杂记录。我应该选择哪种表引擎来加快查询响应速度?它真的会有很大的不同吗? PS:我所有的其他表都使用InnoDB。

另外,如何避免手动创建包含200列的表并为每个列指定数据类型。大多数列是浮点数,很少是varchar和date。

2 个答案:

答案 0 :(得分:1)

通常“更快,ISAM或innodb”的答案将是ISAM

但是为了获得最佳性能,使用只有很少更新的表,您可能需要查看Infobright's columnar db(已集成到mysql中)。

然而,只有30k行你不会看到innodb,isam和infobright之间的显着差异。

OTOH,你真的应该仔细研究一下你是否真的需要200个列。我怀疑情况并非如此 - 架构在确定性能方面远比存储引擎重要得多。

答案 1 :(得分:0)

当处理大量数据时,innodb票价比myisam更好。

http://www.mysqlperformanceblog.com/2007/01/08/innodb-vs-myisam-vs-falcon-benchmarks-part-1/

http://www.cftopper.com/index.cfm?blogpostid=84

James Day,MySQL支持工程师和维基百科工程师建议人们一直使用InnoDB,除非出于某种原因显然你需要MyISAM:

“我会使用InnoDB,直到它被证明它不合适。第一个原因是可靠性。与MyISAM一起崩溃,你有不可靠和缓慢,与表大小,表修复过程相关。与InnoDB相同的事情。而你得到固定的时间,快速和可靠的日志应用/回滚过程。随着数据集越来越大,这越来越重要,因为如果你想做睡眠而不是在中间醒来晚上要修理一张坠毁的桌子。

为了可靠性和性能,我们在维基百科的几乎所有内容中都使用InnoDB - 我们无法承受MyISAM使用时所隐含的停机时间以及在发生崩溃时检查400GB数据表。“