ускорить вставку данных - PullRequest
2 голосов
/ 21 ноября 2011

Я использую базу данных 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:

Первый называется массовой вставкой?

----------- Обновление ---------------

Должен ли я включить / отключить ключи и , оптимизировать мою таблицу после?Поскольку комментарии @ Neil, кажется, не рекомендуют делать это.Каково мнение других?

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

Попробуйте оптимизировать свои запросы, используя массовые вставки. Это должно значительно увеличить скорость вставки данных.

Вы писали, что столкнулись с ошибкой при вставке большого объема данных - 'база данных ушла' .

В этом случае размер запроса не должен превышать максимальный размер пакета - см. Информацию о переменной max_allowed_packet.


Как проверить значение max_allowed_packet -

SELECT @@global.max_allowed_packet;

Как установить это значение -

SET @@global.max_allowed_packet = 200000;

Больше информации здесь

Если всего этого вам недостаточно, взгляните на эту статью (как предложил Gfox) - Скорость операторов INSERT .

1 голос
/ 21 ноября 2011

Я думаю, что отправка одного запроса выполняется быстрее, но с 6 000 000 записей

Database will have problems,

как я пытался на windows `вставить 1000000 записей как один запрос,

я получил эту ошибку database gone away :(

1 голос
/ 21 ноября 2011

Пожалуйста, обратитесь к этой статье.

Отправив один запрос, вы сэкономите несколько шагов и выиграете время.Особенно, когда возникает вопрос о вставке сотен тысяч строк, эта разница во времени будет значительной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...