n+1 [테스트, JPA] 부하테스트와 N+1문제. N+1 문제는 JPA에서 Entity의 정보를 맵핑할 때 발생하는 문제로 1:N 연관관계에 있는 정보에서 N개의 정보를 가져오기 위해 다시 select 쿼리를 날리게 되는데 이를 N+1이라고 한다. JPA에서 연관관계에 있는 정보를 가져오기 위해 N+1 문제가 발생하는 이유는 다음과 같습니다. group (1) - people (N) 관계에서 한 그룹에 여러 사람들이 있는 연관관계를 생각해보... JPAn+1JPA N+1 Problem N+1 Query Problem에 대한 이야기는 많지만 작은 서비스나 프로젝트를 하다보면 간과하고 지나치는 경우가 많다. 최근 서비스의 데이터 규모가 커지면서 이전에 간과했었던 곳곳에서 성능이 크게 저하되는 현상이 생겼는데 모두 쿼리 최적화 관련된 문제였다. 대규모 데이터가 필요한 작업이라거나 결과물이 단순 CSV, 엑셀파일로도 가능하다면 SQL을 그냥 작성하니까 이런 문제가 없겠지만 ORM... n+1querysql최적화ORMORM n+1 N + 1 문제를 알아 보기전에 지연(LAZY) 로딩과 즉시(EAGER) 로딩에 대해 자세히 알아보고자 한다. 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 즉시 로딩으로 데이터를 가져오는 경우. 지연 로딩으로 데이터를 가져온 이후에 가져온 데이터에서 하위 엔티티를 다시 ... n+1BackendBackend
[테스트, JPA] 부하테스트와 N+1문제. N+1 문제는 JPA에서 Entity의 정보를 맵핑할 때 발생하는 문제로 1:N 연관관계에 있는 정보에서 N개의 정보를 가져오기 위해 다시 select 쿼리를 날리게 되는데 이를 N+1이라고 한다. JPA에서 연관관계에 있는 정보를 가져오기 위해 N+1 문제가 발생하는 이유는 다음과 같습니다. group (1) - people (N) 관계에서 한 그룹에 여러 사람들이 있는 연관관계를 생각해보... JPAn+1JPA N+1 Problem N+1 Query Problem에 대한 이야기는 많지만 작은 서비스나 프로젝트를 하다보면 간과하고 지나치는 경우가 많다. 최근 서비스의 데이터 규모가 커지면서 이전에 간과했었던 곳곳에서 성능이 크게 저하되는 현상이 생겼는데 모두 쿼리 최적화 관련된 문제였다. 대규모 데이터가 필요한 작업이라거나 결과물이 단순 CSV, 엑셀파일로도 가능하다면 SQL을 그냥 작성하니까 이런 문제가 없겠지만 ORM... n+1querysql최적화ORMORM n+1 N + 1 문제를 알아 보기전에 지연(LAZY) 로딩과 즉시(EAGER) 로딩에 대해 자세히 알아보고자 한다. 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 즉시 로딩으로 데이터를 가져오는 경우. 지연 로딩으로 데이터를 가져온 이후에 가져온 데이터에서 하위 엔티티를 다시 ... n+1BackendBackend