Пакетная вставка Limit MySQL переполнение стека

Мне нужно сделать несколько вставок в таблицу MySQL с помощью сценария PHP, скажем, Table1 но число может превышать 1000 поэтому я хочу знать, есть ли предел вставки в памяти или количество строк в MySQL? Также, если этот лимит варьируется от сервера к серверу?

0

Решение

Основным ограничивающим фактором здесь является то, как долго оператор MySQL будет принимать. Это определяется с max_allowed_packet системная переменная.

Установка этого в вашем my.cnf файл или эквивалент 1 ГБ, как правило, хорошо. Все остальное может быть абсурдным, но вы можете увеличить его, если у вас есть память, чтобы приспособиться к этому. Помните, что и клиент, и сервер часто нуждаются в этом в памяти, поэтому, если это на одном компьютере, теоретически требуется 2 ГБ. Не становись слишком сумасшедшим здесь.

INSERT заявление с несколькими VALUES в противном случае записи могут загружать столько данных, сколько вы можете вписать в этот размер пакета.

Если вы делаете действительно большой импорт, LOAD DATA INFILE часто намного быстрее, но вам придется подготовить данные в формате, который они могут вместить. CSV-файлы, как правило, легче всего здесь работать.

1

Другие решения

гугл max_allowed_packet. установите так высоко, как позволяет ваша память.
если strlen ($ YourQueryString) <= этот лимит, вы можете отправить его

например, когда я захотел максимизировать пропускную способность php-скрипта, я собрал строки и посчитал их строчными, пока не нажму max_allowed_packet, а затем отправлю его. В цикле. Это было намного быстрее, чем ограничение количества строк.

0

По вопросам рекламы [email protected]