목록 보기
Django ORM defer 기능
백엔드

Django ORM defer 기능

똑똑한개발자
똑똑한개발자
2021년 8월 26일

두줄요약

Django ORM의 `defer()`로 특정 컬럼을 제외한 조회와 저장 동작을 설명했습니다. 제외 필드 접근 시 지연 로딩 쿼리가 발생하는 점을 주의해야 합니다.

구조와 흐름

  • defer()로 지정 컬럼을 제외한 모델 필드만 조회
  • filter() 체이닝과 select_related() 관계 필드의 개별 제외 지원
  • 기존 객체 조회 시 지연 로딩, 신규 생성 시 전체 필드 포함 동작

성능/운영 포인트

  • 큰 모델에서 불필요한 컬럼 전송을 줄이는 경량 쿼리 구성
  • defer된 인스턴스 저장 시 로드된 필드 중심의 UPDATE 수행

주의할 점

  • 제외한 필드 접근 시 추가 SELECT 발생
  • select_related()로 조인한 관계 객체에서도 defer된 필드 접근 시 지연 로딩 발생
  • get_or_create()의 생성 경로에서는 defer 제외 필드 없이 전체 필드 생성

적용해볼 점

  • 목록 조회처럼 일부 필드만 필요한 경로의 대용량 텍스트·이미지 필드 제외
  • 이후 접근 가능성이 높은 필드는 제외 대상에서 배제해 추가 쿼리 방지

다음 읽기

#Django 주제를 이어서 읽기

Django ORM only 기능

Django ORM의 `only()`로 필요한 컬럼만 조회하고 저장 쿼리를 줄이는 방식을 살펴봤습니다.\n미조회 필드 접근 시 lazy loading 추가 쿼리가 발생하므로 필드 선택에 주의해야 합니다.

똑똑한개발자
똑똑한개발자
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...