У меня довольно простой вопрос. Я вставляю много записей сразу в таблицу MySQL. Он работает примерно для 2000 записей (на самом деле немного больше). Но скажу, что я хочу вставить 3000 записей, чем ничего не делает.
Я работаю через AS3, отправляя массив, содержащий все записи через AMFPHP, в простой PHP-скрипт для анализа и вставки массива.
Это нормально, или я должен смотреть в него?
В настоящее время я разбиваю свой массив на части 2000 записей и отправляю несколько запросов AMFPHP вместо 1.
Запросы PHP ограничены параметром конфигурации «max_allowed_packet». Он определяет ограничение абсолютной длины в символах, которое может быть в строке запроса. Обратите внимание, что это не просто общий размер вставляемых данных, а вся строка запроса. Команды SQL, знаки препинания, пробелы и т. Д. …
Проверьте, как долго ваша 3000-ти рекордная версия равна 2000, а затем получите ограничение длины пакета вашего сервера:
SHOW VARIABLES WHERE Variable_name LIKE '%max_allowed_packet%'
Если ваша версия с 3000 экземплярами длиннее этого предела, запрос будет defnitely терпеть неудачу, потому что он будет отрублен где-то частично
Я не думаю, что действительно существует предел количества вставок в одном запросе.
Вместо этого существует ограничение по размеру запроса, который вы можете отправить в MySQL
Видеть :
max_allowed_packet
Таким образом, в основном это зависит от количества данных, которые у вас есть в каждой insert
.
Я бы гарантировал, что max_allowed_packet
больше, чем ваш запрос PHP SQL.
http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html
Я думаю, что PHP не ограничивает количество вставленного запроса на одном, а не ограничивает объем использования памяти, который может быть использован скриптом , и максимальное время выполнения .