Мой прецедент:
У меня есть несколько сценариев, вставляемых в таблицу порядка нескольких вставок в секунду. Я вижу ухудшение производительности, поэтому я думаю, что в «пакетных запросах» будут преимущества производительности и вставка нескольких сотен строк каждую минуту или около того.
Вопрос:
Как мне это сделать, используя mysqli? Мой текущий код использует обертку ( pastebin ) и выглядит так:
$array = array();\\BIG ARRAY OF VALUES (more than 100k rows worth) foreach($array AS $key => $value){ $db -> q('INSERT INTO `player_items_attributes` (`column1`, `column2`, `column3`) VALUES (?, ?, ?)', 'iii', $value['test1'], $value['test2'], $value['test3']); }
Заметки:
Я посмотрел на использование транзакций, но похоже, что они все равно попадут на сервер, а не в очереди. Я бы предпочел использовать обертку (не стесняйтесь предлагать тот, у кого есть аналогичная функциональность, на то, что предлагает мой текущий), но если это невозможно, я попытаюсь создать предложения в используемой оболочке.
Источники:
Упавший сюда
Изменить: я пытаюсь оптимизировать скорость таблицы, а не скорость скрипта. Эта таблица содержит более 35 миллионов строк и имеет несколько индексов.