Django

Django 성능

쿼리 최적화, N+1 문제, 데이터베이스 인덱스, connection pooling, 프로파일링, 모니터링

24 면접 질문·
Senior
1

Django ORM 쿼리와 관련된 가장 일반적인 성능 문제는 무엇입니까?

답변

N+1 문제는 Django ORM에서 가장 일반적인 성능 문제입니다. 초기 쿼리가 N개의 객체를 가져온 다음 관련 객체를 가져오기 위해 추가로 N개의 쿼리가 실행될 때 발생합니다. 예를 들어 article을 반복하면서 작성자에 접근하면 단일 조인 쿼리 대신 article마다 하나씩 쿼리가 생성됩니다.

2

ForeignKey 관계에서 N+1 문제를 해결하려면 어떤 메서드를 사용해야 합니까?

답변

select_related()는 ForeignKey 및 OneToOneField 관계에서 N+1 문제를 해결하는 적절한 메서드입니다. SQL 조인을 수행하여 관련 객체를 단일 쿼리로 가져옵니다. prefetch_related()는 ManyToMany 관계나 역방향 관계(ForeignKey reverse)에 사용됩니다.

3

select_related() 대신 prefetch_related()를 사용해야 하는 경우는 언제입니까?

답변

prefetch_related()는 ManyToMany 관계와 역방향 관계(ForeignKey reverse)를 위해 설계되었습니다. SQL 조인을 수행하는 select_related()와 달리 prefetch_related()는 별도의 쿼리를 실행하고 조인을 Python에서 수행합니다. 이는 many-to-many 관계에서 SQL 조인 시 발생할 데이터 중복을 방지합니다.

4

Prefetch()를 사용하여 prefetch_related() 쿼리를 커스터마이즈하려면 어떻게 합니까?

5

필드에 데이터베이스 인덱스를 추가하는 주된 이점은 무엇입니까?

+21 면접 질문

다음 면접을 위해 Django을 마스터하세요

모든 질문, flashcards, 기술 테스트, 코드 리뷰 연습, 면접 시뮬레이터에 접근하세요.

무료로 시작하기