我有一个非常大的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条记录,则需要很长时间才能完成。
提前谢谢。
答案 0 :(得分:1)
评论太长了。
首先,我不相信你。 70 GB的220亿行每行超过3个字符。如果您使用的是一个插页,那就是(
,)
和另外一个字符。
其次,您无疑对事务日志有疑问。你是在每次插入还是少量插入后进行提交?为了获得最佳性能,您应该在每1,000到100,000之后提交一次,因此日志文件不会太大。
第三,插入数据的最佳方法不是通过插入。您应该使用load data infile
。在不到五天的时间内,您应该能够编写脚本以将insert
语句转换为输入数据文件。然后你可以加载它。更好的是,回到原始数据并以更合适的格式提取它。