
Django-Performance
Query-Optimierung, N+1-Problem, Datenbankindizes, Connection Pooling, Profiling, Monitoring
1Was ist das häufigste Performance-Problem im Zusammenhang mit Django-ORM-Abfragen?
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.
2Welche Methode sollte verwendet werden, um das N+1-Problem bei einer ForeignKey-Beziehung zu lösen?
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.
3Wann sollte prefetch_related() anstelle von select_related() verwendet werden?
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.
Wie verwendet man Prefetch(), um prefetch_related()-Abfragen anzupassen?
Was ist der Hauptvorteil, einen Datenbankindex auf einem Feld hinzuzufügen?
+21 Interview-Fragen
Weitere Django-Interviewthemen
Python-Grundlagen
Objektorientiertes Python
Django-Grundlagen
Django Models - Grundlagen
Django Views
Django-Templates
Django-Formulare
Erweiterte QuerySets
Django-Authentifizierung
Django-Middleware
Django Admin
Django REST Framework
Django-Signale
Datei-Upload
Django Caching
Django-Sessions
Django E-Mail
Django-Testing
Django-Sicherheit
Django-Deployment
Fortgeschrittenes Django ORM
Django & Celery
Django Channels
Django & GraphQL
Django & Docker
Django im Microservices-Ökosystem
Benutzerdefinierte Django-Befehle
Django-Internationalisierung
Django Design Patterns
Django Async & ASGI
Settings & Produktionskonfiguration
Observability & Monitoring
Meistere Django für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten