пытаясь обновить / вставить 20k записей в MySQL, но работает очень медленно какие-либо предложения?

пытаясь обновить / вставить 20k записей в MySQL, но работает очень медленно какие-либо предложения?
Моя конфигурация сервера
Двигатель БД: innodb.
сервер: Amazon Ec2
Ram: 7 ГБ

Я использовал для цикла на 20k записей и в соответствии с моими условиями я вставляю и обновляю записи.
для вставки / обновления записей требуется от 45 до 60 минут.

0

Решение

Вы должны использовать Bulk insert

  INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( a1, a2,...aN ),( b1, b2,...bN ),..;

объединить значения строк и вызвать их как один запрос

0

Другие решения

Если вы повторяете и обновляете каждую запись отдельно, это нормально.

Есть более быстрый способ:

Выполните итерацию по данным, чтобы вставить и настроить максимальный пакет для обновления (1 КБ) с одним оператором sql:

INSERT INTO table (field,...) VALUES (va1,...), (vb1,...) ON DUPLICATE KEY UPDATE field=VALUE(field),ID=LAST_INSERT_ID(ID); где ID is your primary key;

Таким образом, с небольшим количеством вставок вы можете обновлять или создавать новые строки и контролировать свой первичный индекс (не увеличивая при каждом дублировании вставки).

Это должно ускорить процесс менее чем за минуту.

0

По вопросам рекламы [email protected]