【发布时间】:2017-08-26 09:19:13
【问题描述】:
我有一个非常大的 MySql 插入脚本,大小为 70GB,有 22,288,088,954 条记录用于插入。 导入此文件的最佳(最快)方法是什么?
我已经设置好了:
innodb_buffer_pool_size = 4G
innodb_log_buffer_size = 256M
innodb_log_file_size = 1G
innodb_write_io_threads = 16
innodb_flush_log_at_trx_commit = 0
我使用 MySql 命令行客户端执行此文件,但它执行了将近 5 天,当我尝试查看 5 天后插入了多少总记录时,只插入了 4,371,106 条记录。
我使用这个 sql 来查找总插入记录:
SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA LIKE 'mydatabase'
MySql 安装在 Win 10 Pro PC 上,具有 I5 CPU 和 32GB RAM,SSD 磁盘
任何人都可以帮助我并建议一种更快的方法来导入此脚本,因为如果在 5 天内从 22,288,088,954 中只有 4,000,000 条记录,则需要很长时间才能完成。
提前谢谢你。
【问题讨论】:
-
请注意,标签 [tah:batch-file] 用于一种 Windows 脚本,不处理多个文件。
-
为什么要这样做?将这么大的数据导出/导入为插入语句是一个非常糟糕的主意。您可能应该以另一种格式导出数据。或者,如果您无法再次获取数据,我建议您在其之上使用一些额外的程序来处理此文件,然后触发 SQL 批量插入和提交较小块的命令。
-
@user3782239 你的
insert声明是什么样的? -
您是否检查过
little的一些内容,例如拥有唯一整数键需要您使用 Long。