CS TIL

이재하·2023년 10월 18일
0
post-thumbnail

N+1

발생 이유:

N+1 문제는 ORM(Object-Relational Mapping)에서 연관된 엔티티를 조회할 때 발생한다. 기본적으로 1개의 쿼리로 주 엔티티를 조회하고, 각 엔티티에 대한 연관된 엔티티를 조회하기 위해 추가로 N번의 쿼리가 실행된다.

해결 방법:

  1. 조인 사용: 연관된 엔티티들을 한 번의 쿼리로 조인하여 조회한다.
  2. Fetch 모드 조절: Eager Fetch나 Lazy Fetch 모드를 적절히 조절하여 필요한 시점에만 데이터를 가져오도록 한다.
  3. Batch Size 설정: 한 번에 여러 개의 연관된 엔티티를 미리 조회하여 쿼리 수를 줄인다.

즉시로딩과 지연로딩

즉시로딩 (Eager Loading):

사용 시점: 주 엔티티와 연관된 엔티티가 항상 함께 사용되는 경우.

특징: 주 엔티티를 조회할 때 연관된 엔티티도 함께 조회한다.

지연로딩 (Lazy Loading):

사용 시점: 연관된 엔티티가 항상 필요하지 않은 경우.

특징: 연관된 엔티티는 필요할 때 실제로 사용될 때까지 로딩을 지연한다.

즉시로딩은 데이터 접근 패턴이 예측 가능할 때, 지연로딩은 추가적인 성능 최적화가 필요한 경우에 유용하다.

0개의 댓글