我有一个非常大的MySql插入脚本,它有70 is,有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 10Pro PC上,配备I5处理器和32 is内存,固态硬盘
谁能帮助我,并建议一个更快的方法来导入这个脚本,因为如果只有4,000,000条记录从22,288,088,954在5天内,它将需要非常长的时间才能完成。
提前谢谢你。
发布于 2017-08-26 17:28:09
这篇评论太长了。
首先,我不相信你。70 GBytes中的220亿行仅相当于每行超过3个字符。如果您使用的是一个插入,那就是(、)和大约一个字符。
其次,毫无疑问,您的事务日志有问题。您是在每次插入后还是在几次插入后执行提交?为了获得最佳性能,您可能应该在每隔1,000 - 100,000之后提交一次,这样日志文件就不会变得太大。
第三,插入数据的最佳方式根本不是通过插入。您应该使用load data infile。在不到5天的时间内,您应该能够编写脚本将insert语句转换为输入数据文件。然后你就可以加载它了。更好的是,返回到原始数据,并以更合适的格式提取它。
https://stackoverflow.com/questions/45893870
复制相似问题