пытаясь обновить / вставить 20k записей в MySQL, но работает очень медленно какие-либо предложения?
Моя конфигурация сервера
Двигатель БД: innodb.
сервер: Amazon Ec2
Ram: 7 ГБ
Я использовал для цикла на 20k записей и в соответствии с моими условиями я вставляю и обновляю записи.
для вставки / обновления записей требуется от 45 до 60 минут.
Вы должны использовать Bulk insert
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( a1, a2,...aN ),( b1, b2,...bN ),..;
объединить значения строк и вызвать их как один запрос
Если вы повторяете и обновляете каждую запись отдельно, это нормально.
Есть более быстрый способ:
Выполните итерацию по данным, чтобы вставить и настроить максимальный пакет для обновления (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
;
Таким образом, с небольшим количеством вставок вы можете обновлять или создавать новые строки и контролировать свой первичный индекс (не увеличивая при каждом дублировании вставки).
Это должно ускорить процесс менее чем за минуту.