0

我正在将一个包含大约 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。

4

1 回答 1

0

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

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

于 2013-01-09T03:38:41.247 回答