MySql超大文件导入

时间:2017-08-26 09:19:13

标签: mysql sql import

我有一个非常大的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条记录,则需要很长时间才能完成。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

评论太长了。

首先,我不相信你。 70 GB的220亿行每行超过3个字符。如果您使用的是一个插页,那就是()和另外一个字符。

其次,您无疑对事务日志有疑问。你是在每次插入还是少量插入后进行提交?为了获得最佳性能,您应该在每1,000到100,000之后提交一次,因此日志文件不会太大。

第三,插入数据的最佳方法不是通过插入。您应该使用load data infile。在不到五天的时间内,您应该能够编写脚本以将insert语句转换为输入数据文件。然后你可以加载它。更好的是,回到原始数据并以更合适的格式提取它。