首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql超大文件导入

MySql超大文件导入
EN

Stack Overflow用户
提问于 2017-08-26 17:19:13
回答 1查看 307关注 0票数 1

我有一个非常大的MySql插入脚本,它有70 is,有22,288,088,954条记录可供插入。导入此文件的最佳(最快)方法是什么?

我已经设置好了:

代码语言:javascript
复制
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来查找插入的记录总数:

代码语言:javascript
复制
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天内,它将需要非常长的时间才能完成。

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2017-08-26 17:28:09

这篇评论太长了。

首先,我不相信你。70 GBytes中的220亿行仅相当于每行超过3个字符。如果您使用的是一个插入,那就是()和大约一个字符。

其次,毫无疑问,您的事务日志有问题。您是在每次插入后还是在几次插入后执行提交?为了获得最佳性能,您可能应该在每隔1,000 - 100,000之后提交一次,这样日志文件就不会变得太大。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45893870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档