数据插入速度加快



我使用MySQL数据库。

如果我有6,000,000条新记录需要插入到表(不是空表)

问题1:

ALTER TABLE tbl_name DISABLE KEYS;
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9), ... ...
ALTER TABLE tbl_name ENABLE KEYS;
OPTIMIZE TABLE tbl_name;

比:

ALTER TABLE tbl_name DISABLE KEYS;
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)
...
...
ALTER TABLE tbl_name ENABLE KEYS;
OPTIMIZE TABLE tbl_name;

?

问题2:

第一个是大容量插入吗?

----------- 更新 ---------------

我应该启用/禁用键优化我的表之后?@尼尔的评论似乎不建议这样做。别人是怎么看的?

尝试使用批量插入优化查询。这将大大提高插入数据过程的速度。

您写在插入大量数据时遇到错误- 'database gone away'

在这种情况下,查询的大小不应该超过数据包的最大大小 -参见max_allowed_packet变量的信息。


如何检查max_allowed_packet值-

SELECT @@global.max_allowed_packet;

如何设置该值-

SET @@global.max_allowed_packet = 200000;

更多信息在这里

如果所有这些对您来说还不够,那么看看这篇文章(Gfox建议的)- INSERT语句的速度

我认为发送一个查询更快,但有6,000,000条记录,

Database will have problems

当我尝试在Windows上插入1000000记录作为一个查询时,

i got this error database gone away :(

请参考本文。

通过发送一个查询,您将节省几个步骤和赢得时间。特别是当存在插入数十万行的问题时,这个时间差将是显著的。

最新更新