将大数据导入MySQL(MyISAM)

将大数据导入MySQL(MyISAM)

我在 Windows 7 机器上使用 64 位版本的 MySQL 5.5。

我正在尝试将一些非常大的地理空间数据文件从 geonames.org 导入到 MySQL,以便我可以对其运行查询并生成一组较小的数据以满足我的目的。

我使用的存储引擎是 MyISAM,输入数据是一个 1 GB 的文本文件,每行都用制表符分隔。我相信该文本文件包含大约 800 万行。

最初,我将文件导入到使用 InnoDB 引擎的数据库中。出现很多警告,可能是由于地理空间数据。导入大约花费了 6.5 分钟,这还算合理。

然后我尝试使用 MyISAM 存储引擎将数据导入数据库。导入仍在进行中,我花了 30 多分钟等待导入完成。

服务器配置了常规“开发人员”设置。我注意到,当我使用 MySQL Workbench 查看服务器状态时,关键效率运行在 100%,而内存使用率约为 40%(我的机器中有 12GB 的 RAM),CPU 使用率约为 5%。是否有任何特定的设置/调整我应该查看以加快导入速度?

编辑:所以它刚刚完成导入:有什么方法可以加快速度吗?

Query OK, 7836651 rows affected, 65535 warnings (50 min 20.89 sec)
Records: 7836651  Deleted: 0  Skipped: 0  Warnings: 5630783

答案1

如果你使用加载数据文件,你需要确保增加 批量插入缓冲区大小达到 256M 这样较大的值。

答案2

听起来应该使用 InnoDB。此外,如果需要,还可以调整相关的 MySQL 设置以使用更多 RAM,并获得更快的磁盘(如果 CPU 和内存没有固定,那么磁盘几乎肯定是瓶颈)。

相关内容