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