Мне нужно сделать несколько вставок в таблицу MySQL с помощью сценария PHP, скажем, Table1
но число может превышать 1000
поэтому я хочу знать, есть ли предел вставки в памяти или количество строк в MySQL? Также, если этот лимит варьируется от сервера к серверу?
Основным ограничивающим фактором здесь является то, как долго оператор MySQL будет принимать. Это определяется с max_allowed_packet
системная переменная.
Установка этого в вашем my.cnf
файл или эквивалент 1 ГБ, как правило, хорошо. Все остальное может быть абсурдным, но вы можете увеличить его, если у вас есть память, чтобы приспособиться к этому. Помните, что и клиент, и сервер часто нуждаются в этом в памяти, поэтому, если это на одном компьютере, теоретически требуется 2 ГБ. Не становись слишком сумасшедшим здесь.
INSERT
заявление с несколькими VALUES
в противном случае записи могут загружать столько данных, сколько вы можете вписать в этот размер пакета.
Если вы делаете действительно большой импорт, LOAD DATA INFILE
часто намного быстрее, но вам придется подготовить данные в формате, который они могут вместить. CSV-файлы, как правило, легче всего здесь работать.
гугл max_allowed_packet. установите так высоко, как позволяет ваша память.
если strlen ($ YourQueryString) <= этот лимит, вы можете отправить его
например, когда я захотел максимизировать пропускную способность php-скрипта, я собрал строки и посчитал их строчными, пока не нажму max_allowed_packet, а затем отправлю его. В цикле. Это было намного быстрее, чем ограничение количества строк.