#php #doctrine-orm #doctrine
#php #doctrine-orm #doctrine
Вопрос:
Нормально ли иметь проблемы с производительностью в doctrine при работе со вставкой или обновлением более 2000 записей? Должен ли я обратиться к PDO?
Комментарии:
1. Doctrine — это оболочка для PDO (и других тоже). Скорее всего, это сводится к вашим запросам. Конечно, Doctrine добавляет некоторые накладные расходы, но обычно они незначительны. Также опубликуйте некоторый код.
Ответ №1:
ДА. Doctrine эффективен, когда вы используете массовую выборку, но очень плох, если вы используете массовое обновление, вставку или удаление. Не используйте doctrine, для этих операций используйте обычный sql. Например, при массовой вставке вы создаете 2000 объектов (мало памяти сервера), а затем doctrine вставляет их один за другим, если вы выполняете сброс в цикле. Конечно, вы можете сохранить их, например, с помощью блока объектов 200 и сброса, но все равно использование памяти будет намного больше, чем вставка через обычный sql. Еще хуже, если вы выберете 2000 записей с помощью doctrine, тогда эти записи станут не только объектами entity, но и постоянной коллекцией с множеством других объектов, сопоставленных с ними, и когда вы попытаетесь сохранить их, сервер будет использовать еще больше памяти.