Django

Prestazioni di Django

Ottimizzazione delle query, problema N+1, indici del database, connection pooling, profiling, monitoring

24 domande da colloquio·
Senior
1

Qual è il problema di prestazioni più comune legato alle query dell'ORM di Django?

Risposta

Il problema N+1 è il problema di prestazioni più comune con l'ORM di Django. Si verifica quando una query iniziale recupera N oggetti e poi vengono eseguite N query aggiuntive per recuperare gli oggetti correlati. Ad esempio, iterare sugli articoli e accedere al loro autore genera una query per articolo invece di una singola query con join.

2

Quale metodo si dovrebbe usare per risolvere il problema N+1 con una relazione ForeignKey?

Risposta

select_related() è il metodo appropriato per risolvere il problema N+1 con le relazioni ForeignKey e OneToOneField. Esegue un join SQL e recupera gli oggetti correlati in una singola query. prefetch_related() viene usato per le relazioni ManyToMany o le relazioni inverse (ForeignKey reverse).

3

Quando si dovrebbe usare prefetch_related() invece di select_related()?

Risposta

prefetch_related() è progettato per le relazioni ManyToMany e le relazioni inverse (ForeignKey reverse). A differenza di select_related() che esegue un join SQL, prefetch_related() esegue una query separata ed effettua il join in Python. Questo evita la duplicazione dei dati che si verificherebbe con un join SQL sulle relazioni many-to-many.

4

Come usare Prefetch() per personalizzare le query di prefetch_related()?

5

Qual è il vantaggio principale di aggiungere un indice del database su un campo?

+21 domande da colloquio

Padroneggia Django per il tuo prossimo colloquio

Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.

Inizia gratis