将大量数据上传到MySQL服务器

时间:2012-09-29 21:30:34

标签: mysql optimization

我必须在共享网站空间上将大约1600万条记录上传到MySQL 5.1服务器,这不允许LOAD DATA功能。该表是Innodb表。我还没有分配任何密钥。

因此,我使用Python脚本将我的CSV文件(大小为2.5 GB)转换为带有单独INSERT语句的SQL文件。我已经启动了SQL文件,这个过程非常慢,感觉每分钟处理1000-1500行!

与此同时,我阅读了有关批量插入的内容,但没有找到任何可靠的来源,告诉一个insert语句可以有多少条记录。你知道吗?

没有钥匙并稍后添加它们是否有利?

围绕所有插件的事务是否有助于加快进程?事实上,目前只有一个连接(我的)与数据库一起工作。

1 个答案:

答案 0 :(得分:1)

如果使用insert ... values ...语法插入运行单个请求的多个行,则查询大小受max_allowed_packet值限制,而不是行数。

关于键:在任何数据操作之前定义键是一个好习惯。实际上,当你构建一个模型时,必须想到键,关系,索引等。

最好在插入数据之前定义索引。 CREATE INDEX在庞大的数据集上工作得非常慢。但推迟创建索引并不是一个巨大的劣势。

要使插入更快,请尝试启用autocommit模式,不要在表上运行并发请求。