LOAD DATA INFILE - 如果我有一个大文件,哪个引擎?

时间:2011-12-22 11:14:56

标签: mysql innodb myisam

我需要一位已经遇到问题的人的建议。

我的体重超过10密耳。记录要导入新表的.txt文件。首先,我希望找到关于表引擎的最佳选择的一些“专家意见”。

不幸的是,我发现InnoDB有50%的意见,MyISAM有50%的意见。根据您的经验,记住信息量,以及我将使用LOAD DATA INFILE,这是我的表引擎的最佳选择吗? 请给我一些有力的论据:)不只是建议使用其中一个!

第二:在我决定选择哪个引擎之后,让我们说MyISAM,如果将来我需要在交易中使用该表,我是一个很好的做法,以“临时”改变引擎表到InnoDB以便执行事务,之后又回到第一个选择的选项?

2 个答案:

答案 0 :(得分:1)

我认为InnoDB在您的情况下是更好的选择。请看一下这篇文章:http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/

答案 1 :(得分:1)

Innodb喜欢能够在内存中拥有它的索引,如果它不能,它会大大减速。 MyISAM在具有大型数据集的低内存情况下表现更好。在MyISAM中还有一些独特的选项,如MERGE表,它们允许您将大表拆分为较小的表,并从较小的表中创建虚拟/合并表。

如果您正在进行大量修改(插入/更新/删除),那么Innodb会做得更好(锁定问题更少)。但如果您没有同时修改,MyISAM会做得很好。

切换表类型需要太长时间,但它是一个选项。如果您想同时拥有MyISAM和Innodb,请设置复制。您可以在一台服务器上安装Innodb表,在复制服务器上安装MyISAM。主表/从表上的表类型不必相同。