ORM 최적화

이민석·2022년 1월 16일
0

ORM

목록 보기
1/1

Lazy Loading(지연 로딩)

  • 함수를 호출했다고 하더라도, 바로 실행되지 않고 필요할 때 사용하는 방법
  • 보통 변수 지정만 했을 때 실행된다고 생각하지만, Evaluation, Interation을 실행해야 실제로 실행된다.
  • 장고 내부 동작으로 인해 어떤 쿼리셋을 호출하면 그 값을 어딘가에 저장했다가 필요할 때 다시 불러오므로 다시 호출하지 않아도 된다.(=캐싱)
  • 실제 쿼리셋이 디비에 저장되는 시점은 호출되어 평가되는 시점이다.

caching

  • 캐싱이 되면 계속 디비에 접근하여 호출하는 것이 아닌 저장된 값을 불러와서 사용하므로 한 번의 호출로 계속 사용할 수 있다.
  • 일반 호출 시에는 캐싱이 되지 않고 특정 상황(for, if문)을 사용할 경우에 자동으로 캐싱이 된다.

prefetch_related

  • 쿼리를 추가할 때 마다 새로운 쿼리를 추가해서 날리는 방식. 기본 루트쿼리에 원하는 쿼리를 계속 추가해서 정보를 불러온다.

select_related

  • 한번에 join해서 가져오는 것. 모든 함수를 다 합쳐서 query에 요청하므로 한번에 보내는 방식.
profile
오늘은 무엇을 배울까

0개의 댓글