Django

Django-Performance

Query-Optimierung, N+1-Problem, Datenbankindizes, Connection Pooling, Profiling, Monitoring

24 Interview-Fragen·
Senior
1

Was ist das häufigste Performance-Problem im Zusammenhang mit Django-ORM-Abfragen?

Antwort

Das N+1-Problem ist das häufigste Performance-Problem beim Django-ORM. Es tritt auf, wenn eine erste Abfrage N Objekte abruft und dann N zusätzliche Abfragen ausgeführt werden, um die verknüpften Objekte abzurufen. Wenn man beispielsweise über Artikel iteriert und auf deren Autor zugreift, wird eine Abfrage pro Artikel statt einer einzigen Join-Abfrage erzeugt.

2

Welche Methode sollte verwendet werden, um das N+1-Problem bei einer ForeignKey-Beziehung zu lösen?

Antwort

select_related() ist die geeignete Methode, um das N+1-Problem bei ForeignKey- und OneToOneField-Beziehungen zu lösen. Sie führt einen SQL-Join durch und ruft die verknüpften Objekte in einer einzigen Abfrage ab. prefetch_related() wird für ManyToMany-Beziehungen oder umgekehrte Beziehungen (ForeignKey reverse) verwendet.

3

Wann sollte prefetch_related() anstelle von select_related() verwendet werden?

Antwort

prefetch_related() ist für ManyToMany-Beziehungen und umgekehrte Beziehungen (ForeignKey reverse) konzipiert. Anders als select_related(), das einen SQL-Join durchführt, führt prefetch_related() eine separate Abfrage aus und führt den Join in Python durch. Dies vermeidet die Datenduplikation, die bei einem SQL-Join über Many-to-Many-Beziehungen auftreten würde.

4

Wie verwendet man Prefetch(), um prefetch_related()-Abfragen anzupassen?

5

Was ist der Hauptvorteil, einen Datenbankindex auf einem Feld hinzuzufügen?

+21 Interview-Fragen

Meistere Django für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten