bdmalex
INSERT DELAYED работает только с MyISAM, MEMORY, ARCHIVE. В версии 5.6 это уже depricated, в версии 5.7 — исключён. Применение находило для отложенной записи от множества клиентов, не от одного. Минус инструкции — отсутствие гарантии записи и в повышенном потреблении ресурсов сервера т.к. на каждую отложенную запись открывался свой поток, который закрывался когда несколько потоков объединялись в единичную запись в таблицу. По сути, несколько delayed трансформировались в последовательный список обычных insert (это если говорить образно).
Agent_J
1) 2МБ в запросе для innodb «из коробки» вполне допустимый размер.
2) Для повышения производительности Вы можете использовать один INSERT с несколькими VALUES:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
Документация поясняет что на запрос в условных единицах тратится (без учета коннекта):
Sending query to server: (2)
Parsing query: (2)
Inserting row: (1 × size of row)
Inserting indexes: (1 × number of indexes)
Отправку можно опустить, но 10000 INSERT разделённых «точкой с запятой» на уровне логики БД это 10000
отдельных запросов, для которых будет применяться парсер, причём не синтаксический а именно единичного запроса, который формирует команду из SQL в низкоуровневую команду хранилища, что дает 20к единиц и это при том что вставка данных потребует только 10к единиц.
3) В случае если есть возможность записать файл на диск с доступом чтения для сервера mysql то:
LOAD DATA INFILE — прирост производительности в 20 раз (
источник та же документация).