CS TIL

mjjin·2023년 10월 18일
0

N+1 문제

발생 이유:

ORM을 쓰다 보면 N+1 문제가 자주 나타나곤 한다. 데이터베이스에서 부모 엔티티와 그것과 연관된 자식 엔티티를 조회할 때의 문제다. 부모 엔티티를 한 번 가져오고, 그 부모마다 자식 엔티티를 가져오다 보면 쿼리가 N+1번 돌게 된다. 여기서 N은 자식 엔티티의 수다.

해결 방법:

조인: 조인을 사용하면 한 번의 쿼리로 데이터를 가져올 수 있다.
Batch Size 설정: ORM에서는 배치 크기를 설정해서 한 번에 여러 데이터를 가져올 수 있다. 예로, Hibernate는 @BatchSize를 사용한다.
Entity Graph나 Fetch Join: 이 방법들을 사용하면 필요한 연관 데이터를 미리 가져올 수 있다.


즉시로딩과 지연로딩

즉시로딩이란:

엔티티를 조회할 때 연관된 데이터도 바로 가져오는 것이다.

사용 시기:

연관된 데이터를 항상 함께 사용할 때 적합하다.
데이터를 빠르게 가져오고 싶을 때도 좋다.

지연로딩이란:

엔티티를 조회할 때 연관된 데이터는 나중에 필요할 때 가져오는 것이다.

사용 시기:

연관된 데이터가 항상 필요하지 않을 때 사용한다.
메모리 사용량을 줄이고 싶을 때도 유용하다.

0개의 댓글