MySQL LOAD DATA INFILE在小文件上的性能

时间:2013-01-09 03:18:37

标签: mysql performance

我正在将一个包含大约1K行的小数据文件加载到MyISAM表中

{
id INT(8), 
text TEXT(or VARCHAR(1000))
}

LOAD DATA INFILE的成本约为2秒。我已经看到MySQL在加载大文件时平均每秒可以加载超过10K行。而我大致知道有开/关表这样的成本。有人可以帮助我知道这2秒内究竟发生了什么,并且可以在几秒钟内优化它,因为我的程序在时间关键的环境中运行。感谢。

有人在这里问了一个类似的问题 http://forums.mysql.com/read.php?144,558753,558753。 看起来还没有得到很好的回答。

场景描述

整个MySQL设置适用于一些学术项目,其中包含大约300G数据库用于各种项目。如果不是全部,大多数这些数据库都在MyISAM引擎中。这些数据库包含导入的转储和实验中处理的中间表。这些表上有删除和更新操作,但现在它们都处于空闲状态。我有一个项目生成一些结果元组,这些元组插入到其中一个数据库的表中。该表初始化为空。架构非常简单,只粘贴了两列。现在,如果我设置ENGINE = MyISAM,插入1-1K行总是需要2s,但是,如果我切换到ENGINE = INNODB,它将变为0.01s。我在另一台机器上安装了一个新MySQL,用ENGINE = MyISAM创建表,并插入相同数量的行,只需0.01s。

1 个答案:

答案 0 :(得分:0)

在1k行中,您可能会发现多插入更快。一些基准应该有所帮助。这也应该有用:

http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb.html