我正在使用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:
第一个名为批量插入吗?
-----------Update---------------
我是否应该在启用/禁用键和优化表之后?作为@ Neil的评论似乎不建议这样做。其他人的意见是什么?
发布于 2011-11-21 13:28:31
尝试使用批量插入优化查询。这将大大提高插入数据进程的速度。
您写道,您在插入大量数据时遇到了一个错误--‘数据库已消失’。
在本例中,查询的大小不应超过数据包的最大大小-请参阅有关max_allowed_packet变量的信息。
如何检查max_allowed_packet值-
SELECT @@global.max_allowed_packet;如何设置这个值-
SET @@global.max_allowed_packet = 200000;这里有更多的信息
如果所有这些都不足以满足您的需要,那么请看一看这篇文章(正如Gfox所建议的)- 插入语句的速度。
发布于 2011-11-21 11:58:48
请参阅这篇文章。
通过发送一个查询,您将节省几个步骤并赢得时间。特别是当有一个插入数十万行的问题时,这个时差将是很大的。
发布于 2011-11-21 12:14:17
我认为发送一个查询更快,但有600万条记录,
Database will have problems,
当我尝试将windows的insert 1000000记录作为一个查询时,
我得到了一个错误database gone away :(
https://stackoverflow.com/questions/8211299
复制相似问题