PHP Максимальное количество вставок в одном запросе SQL - PullRequest
4 голосов
/ 20 апреля 2011

У меня довольно простой вопрос.Я вставляю много записей одновременно в таблицу MySQL.Это работает около 2000 записей (на самом деле немного больше).Но, скажем, я хочу вставить 3000 записей, чем он ничего не делает.

Я работаю через AS3, отправляя массив, содержащий все записи через AMFPHP, в простой PHP-скрипт для анализа и вставки массива.

Это нормально, или я должен посмотреть на это?

В настоящее время я разбиваю свой массив на части по 2000 записей и отправляю пару запросов AMFPHP вместо просто 1.

Ответы [ 4 ]

11 голосов
/ 20 апреля 2011

Запросы PHP ограничены параметром конфигурации "max_allowed_packet". Он определяет предел абсолютной длины в символах, которым может быть строка запроса. Обратите внимание, что это не просто общий размер вставляемых данных, а вся строка запроса. SQL-команды, знаки препинания, пробелы и т. Д. ...

Проверьте, какова длина вашей версии 3000 записей по сравнению с версией 2000, а затем получите ограничение длины пакета вашего сервера:

SHOW VARIABLES WHERE Variable_name LIKE  '%max_allowed_packet%'

Если ваша версия с 3000 записями длиннее этого предела, запрос определенно не будет выполнен, потому что он будет частично отключен

3 голосов
/ 20 апреля 2011

Не думаю, что количество вставок в одном запросе действительно ограничено.

Вместо этого существует ограничение в размере запроса , который вы можете отправить в MySQL
См .:


Так что, в основном, это зависит от количества данных, которые у вас есть в каждом insert.

2 голосов
/ 20 апреля 2011

Я бы гарантировал, что max_allowed_packet больше, чем ваш PHP-запрос.

http://dev.mysql.com/doc/refman/5.5/en/packet-too-large.html

0 голосов
/ 20 апреля 2011

Я думаю, что PHP не ограничивает количество вставляемых запросов одним, а ограничивает количество использования памяти, которое может быть взято скриптом и максимальным временем выполнения .

...