Multi insert. Чем плохо большое значение max_allowed_packet в mysql?
По крону гружу со стороннего апи продукты в базу. Чтобы не делать много маленьких вставок, вставляю сразу 200 товаров через multi insert. Именно 200, потому что больше не влезает в запрос, упирается в ограничение max_allowed_packet (64M). При это размер 200 товаров может быть разный (длина описания и тп), то есть варьируется.
Вопрос:
Какие минусы меня ожидают, если я, например увеличу размер этого параметра в 5 раз и буду вставлять разом не 200, а 1000 товаров? Какие минусы с точки зрения большого значения и какие минусы с точки зрения большого количества записей на один инсёрт. Везде пишут, что вставлять много записей разом лучше, чем вставлять много раз по 1 записи, но нужно ли как-то ограничивать количество для одной вставки? Можно ведь и несколько гигабайт выставить и вставлять вообще все товары одним инсёртом. Как сделать оптимальнее?
1. Вам по большому счету не нужно заморачиваться с данным вопросом, это дело прослойки работающей с бд.
например у вас 1000 записей, вы их вставляете например массивом $adapter->insert("table",$data)
этот метод должен определить размер вставляемых данных, получить настройку max_allowed_packet определяющую размер пакета, разделить вставляемый массив на части в зависимости от размера пакета = весь размер массива/max_allowed_packet
2. Если 200 товаров у вас упирается в 64мб то 1000 товаров будет весить 320мб, вы можете упереться в память php (memory_limit) поэтому придется увеличивать ее также