Является ли одно двунаправленное отношение Doctrine2 менее эффективным, чем два однонаправленных отношения?

Связано с лучшими практиками Doctrine2: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/best-practices.html

и связанные с этим сообщением: Почему рекомендуется избегать двунаправленных отношений в ORM?

Мне нужно понять, влияют ли два однонаправленных отношения на производительность так же сильно, как одно двунаправленное отношение, меньше или больше.

Поскольку оба типа отношений приводят к одному и тому же SQL, проблемы с производительностью, по-видимому, связаны с гидратацией, сохранением и запросами DQL.

Как описано здесь: https://ocramius.github.io/blog/doctrine-orm-optimization-hydration/


person Nicolas    schedule 08.05.2018    source источник


Ответы (1)


Во-первых, важно понимать, что проблема с производительностью возникает на стороне PHP, а не на стороне СУБД.

Проблемы с производительностью, вызванные двунаправленными отношениями, в основном связаны с двумя моментами:

  • процесс гидратации переменных модели
  • Запросы DQL с большим количеством предложений JOIN

Так что ответ на вопрос - нет. Даже если с одним двунаправленным отношением можно добиться тех же целей, что и с двумя однонаправленными отношениями, более эффективно использовать одно двунаправленное из-за оптимизации процесса гидратации.

person Nicolas    schedule 23.05.2018