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

将大量数据上传到MySQL服务器,mysql,optimization,Mysql,Optimization,我必须将大约1600万条记录上传到MySQL 5.1服务器上的共享Web空间中,该空间不允许加载数据功能。该表是一个Innodb表。我还没有分配任何钥匙 因此,我使用Python脚本将我的CSV文件(大小为2.5GB)转换为带有单个INSERT语句的SQL文件。我已经启动了SQL文件,这个过程非常慢,感觉每分钟处理1000-1500行 同时,我阅读了有关批量插入的内容,但没有找到任何可靠的来源来说明一条insert语句可以包含多少条记录。你知道吗 没有钥匙,以后再添加是否是一种优势 围绕所有插入

我必须将大约1600万条记录上传到MySQL 5.1服务器上的共享Web空间中,该空间不允许加载数据功能。该表是一个Innodb表。我还没有分配任何钥匙

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

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

没有钥匙,以后再添加是否是一种优势


围绕所有插入的事务是否有助于加快该过程?事实上,此时只有一个连接(我的)在使用数据库。

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

关于键:在任何数据操作之前定义键是一个很好的实践。实际上,在构建模型时,必须考虑键、关系、索引等

最好在插入数据之前定义索引<代码>创建索引在大型数据集上的工作速度非常慢。但推迟索引创建并不是一个巨大的缺点


要加快插入速度,请尝试打开模式,不要在表上运行并发请求。

事务只会使插入速度变慢。允许的最大数据包大小恰好为16777216,因此,假设一个插入行的文本长度约为300字节,这意味着每次插入执行大约50000条记录。此外,自动提交在我的服务器上默认是打开的。我更改了我的脚本,让它一次生成10000条记录的批量插入,这确实是解决方案!从一周左右的单次插入运行,执行时间现在下降到6小时左右。好东西!