일대일 관계에서 발생하는 N+1 문제 해결
최근 사이드 프로젝트 ‘가보자IT’을 전체 리펙토링 하면서 N+1과 같은 문제를 전부 해결했습니다. 대부분 Querydsl IN 절을 통해서 해결했습니다. 하지만 성능 테스트를 하다가 다시 한번 N+1 문제가 일어나는 것을 목격했습니다. 개요 OneToOne 관계 프로젝트에서 하나의 이메일당 한개의 계정을 생성할 수 있는 요구사항이 있습...
최근 사이드 프로젝트 ‘가보자IT’을 전체 리펙토링 하면서 N+1과 같은 문제를 전부 해결했습니다. 대부분 Querydsl IN 절을 통해서 해결했습니다. 하지만 성능 테스트를 하다가 다시 한번 N+1 문제가 일어나는 것을 목격했습니다. 개요 OneToOne 관계 프로젝트에서 하나의 이메일당 한개의 계정을 생성할 수 있는 요구사항이 있습...
Spring에서 Querydsl로 동적 커서 기반 페이지네이션 쿼리를 구성하는 방법에 대해 알아보겠습니다. 개요 동적 쿼리란? 동적 쿼리는 상황에 알맞는 쿼리문을 생성해서 데이터베이스에 날려주는것 입니다. 예시 1 users 테이블에서 커서 기반 페이지네이션으로 회원을 조회하고 싶으면 다음과 같이 코드를 구현해야 됩니다. JpaRep...
프로젝트에서 발생한 N+1 문제를 해결해 보겠습니다. 제가 진행한 프로젝트는 사이드 프로젝트를 함께할 팀원이나 팀을 찾을 수 있는 서비스입니다. 개요 N+1이란? 연관 관계가 있는 entity A 하나를 조회하고, 그 관계를 통해서 entity B를 조회할 때 query가 entity A의 개수만큼 일어나는 현상을 N +1이라고 합니다. ...
대부분의 서비스에서는 아이디 또는 이메일 중복을 검증합니다. 그래서 이번에 중복 검증을 위한 query 개선을 해봤습니다. 개요 Email을 가지고 있는 Contact라는 entity에서 이메일 중복 검사를 수행하기 위해 query를 하는 상황입니다. 테스트를 위해 50,000개의 데이터 tester1@nogamsung.com 부터 test...