Alexey
Ты сказал, что со старой базы на новую мигрируешь.
Sergey
миграция данных с одной структуры на другую
S
а ну это да
Sergey
ну так жахни кучку SQL
Alexey
Ну вот и как бы зачем тебе ORM.
Sergey
да и вообще
Sergey
это одноразовая операция?
S
ну то есть самый быстрый - SQLы чистые
S
Да
Sergey
ну тогда без clear сделай
Sergey
и выдели пару гигов памяти
Sergey
или делай с clear
Sergey
и жди
Sergey
20К не так много
S
с clear - 18 часов ~ получается
Alexey
Если тебе не нужны какие-нибудь фичи ORM типа Lifecycle Callbacks или ивентов доктрины или ещё чего-то - особого смысла в доктрине при импорте данных нет.
S
Если бы ночью вчера запустил - то можно было бы
Sergey
с clear - 18 часов ~ получается
это ж как плохо то все
S
Ну вот не знаю, как-то так... Может конечно еще где-то косячу
Sergey
это получается что всего тысяча записей в ЧАС
Alexey
Кстати, зачем мигрировать в фикстуре - тоже вопрос, конечно.
Sergey
это ж какая там стремная структура базы
S
Первые три тысячи - за 15 минут :) а дальше начинается тупняк
Alexey
Эстонская база?
Sergey
банальный insert с вложенным SELECT
Sergey
Первые три тысячи - за 15 минут :) а дальше начинается тупняк
тупняк начинается потому что PHP и сборка мусора.
Sergey
clear должен спасать
Alexey
clear() можно делать реже. Если ты в память не упираешься, то чего дёргать-то его, если это разовая операция?
Alexey
Ну и если identity map не перегружен, конечно, уже.
Sergey
раз в пару тысяч записей делай clear
Alexey
Я примерно так и делаю на проектах, где надо большие объёмы данных именно через доктрину пропускать. Раз в несколько тысяч итераций.
S
Если clear убирать - то получается нужно уже cascade={"persist"} указывать, таких полей 4
Sergey
иначе повторюсь
Sergey
зачем тебе доктрина вообще в проекте если ты ей по сути не пользуешься
Sergey
и только страдаешь
Sergey
короч я хз... мое мнение - доктрина нужна тогда когда тебе надо сделать что-то с небольшим графом сущностей (до пары сотен например)) где четко можно выделить главную
Sergey
все остальное - ORM не нужна
Sergey
SQL/DQL
S
В общем, спасибо, сейчас подумаю еще и либо памяти выделю, либо пойду на DQL/SQL перепишу
Sergey
проще памяти докинуть
Sergey
зачем тратить время и оптимизировать одноразовую операцию
S
Спасибо. Выделю память, пойду смотреть на то, во что превратиться
fink3L
Спасибо. Выделю память, пойду смотреть на то, во что превратиться
а вот это делал? я помню мне когда-то давно помогло
fink3L
$em->getConnection()->getConfiguration()->setSQLLogger(null);
S
Так и не понял для чего multiple-transaction нужен в фикстурах. Думал что он делает один множественный инсерт
fink3L
хотя это было много лет назад
S
но не делал
fink3L
ибо логгер жрал память и все тупило
S
Хм
fink3L
ну я так, вспомнил, вдруг поможет
S
Надо попробовать
S
максимально все облегчить, что можно
Sergey
ибо логгер жрал память и все тупило
потому что по дефолту юзается cross-finger handler монолога который пишет сначала в буфер и надо периодически ему тоже флаш делатью
Sergey
многие любители пописать на симфони демонов на это напарываются
S
Хм
S
Память перестала утекать
S
400мб хватает , и почти закончилась процедура
fink3L
это без логера?
S
Да и с ноу-дебаг
Sergey
повторюсь, потому что флашить надо монолог
S
Так что полезным оказалось. Благодарю!
Sergey
что бы он буферы не переполнял
S
повторюсь, потому что флашить надо монолог
Или отключать ) как флашить надо тоже почитать
Sergey
https://github.com/mac-cain13/daemonizable-command
Sergey
рекомендую
Sergey
там есть раздел про память
S
Благодарю
S
За час все раскидалось. Всем, кто помогал советами и мыслями, большое спасибо1
Alan
https://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html
Alan
перед импортом чтоб не перестраивало индексы каждый раз ну и разделить на транзакции пачками коммитить
S
:) doctrine так умеет делать?
Alan
вродь оно http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/transactions-and-concurrency.html#approach-2-explicitly
Alan
и http://stackoverflow.com/a/9710383/3204244
S
Спасибо. Посмотрю
Sergey
Вопрос, те кто юзают DoctrineFixtureBundle... никто не загонялся по конфигурируемым фикстурам?