Django

Wydajność Django

Optymalizacja zapytań, problem N+1, indeksy bazy danych, connection pooling, profiling, monitoring

24 pytań z rozmów·
Senior
1

Jaki jest najczęstszy problem wydajnościowy związany z zapytaniami ORM Django?

Odpowiedź

Problem N+1 to najczęstszy problem wydajnościowy w ORM Django. Występuje, gdy początkowe zapytanie pobiera N obiektów, a następnie wykonywanych jest N dodatkowych zapytań w celu pobrania obiektów powiązanych. Na przykład iterowanie po artykułach i dostęp do ich autora generuje jedno zapytanie na artykuł zamiast pojedynczego zapytania z joinem.

2

Której metody należy użyć do rozwiązania problemu N+1 w relacji ForeignKey?

Odpowiedź

select_related() to odpowiednia metoda do rozwiązania problemu N+1 w relacjach ForeignKey i OneToOneField. Wykonuje join SQL i pobiera obiekty powiązane w pojedynczym zapytaniu. prefetch_related() jest używany dla relacji ManyToMany lub relacji odwrotnych (ForeignKey reverse).

3

Kiedy należy używać prefetch_related() zamiast select_related()?

Odpowiedź

prefetch_related() jest przeznaczony dla relacji ManyToMany i relacji odwrotnych (ForeignKey reverse). W przeciwieństwie do select_related(), które wykonuje join SQL, prefetch_related() wykonuje oddzielne zapytanie i realizuje łączenie w Pythonie. Pozwala to uniknąć duplikacji danych, która wystąpiłaby przy joinie SQL na relacjach many-to-many.

4

Jak używać Prefetch() do dostosowywania zapytań prefetch_related()?

5

Jaka jest główna korzyść z dodania indeksu bazy danych do pola?

+21 pytań z rozmów

Opanuj Django na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo