Вставка 10 000 записей в одной транзакции?
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 раз (источник та же документация).
Главное, чтобы размера журнала при этом хватило. Т.к. в случае переполнения журнала транзакций, все вылетит с ошибкой и вы не сможете сохранить эти 10 000 записей.