본문 바로가기

성능고도화

(3)
import 관리와 리팩토링 코드를 위한 upgrade 브랜치 생성하기 1️⃣ import 관리 import 관리는 중요한 부분이다. 대부분의 개발환경에서는 사용하지 않는 import 를 자동으로 제거하거나 정리해주는 기능이 있으므로 이를 활용하는 것도 좋다. 가독성 & 유지보수 사용하지 않는 import 가 많으면 코드 유지보수에 문제가 생길 수 있다. 예를 들면 사용되지 않는 라이브러리나 클래스에 의존성이 생기게 된다. 성능 대부분의 import문 자체가 성능에 큰 영향을 미치지는 않으나, 불필요한 클래스나 라이브러리의 로딩은 애플리케이션의 시작시간이나 메모리 사용량에 영향을 줄 수 있다. 의존성관리 불필요한 import 로 인해 프로젝트의 실제 의존성 파악이 어려워지고, 이로 인해 라이브러리 버전을 관리하거나 제거할 때 문제가 발생할 수 있음. 컴파일에러 잘못된 imp..
[코드 리팩토링] 불필요한 DB쿼리 실행 줄이기 1. 로그인 같은 쿼리 2번 발생 : members 테이블에서 이메일로 회원정보를 검색 + 이메일로 회원정보를 검색 2023-06-07 13:16:14.160 DEBUG 33594 --- [nio-8443-exec-6] tor$SharedEntityManagerInvocationHandler : Creating new EntityManager for shared EntityManager invocation Hibernate: select member0_.member_id as member_i1_2_, member0_.created_at as created_2_2_, member0_.last_modified_at as last_mod3_2_, member0_.created_count as created_4..
N+1 문제란 무엇이고 어떤 해결방법이 있는지 알아보자. N+1 문제란? 데이터 베이스에서 발생할 수 있는 성능문제 중 하나로 연관관계에서 발생하는 이슈다. 한번의 쿼리로 기대하는 데이터를 가져오길 바랐으나 연관관계의 엔티티를 조회할 때, 조회된 데이터 갯수만큼 연관관계의 조회 쿼리가 추가로 발생해서 데이터를 읽어와 불필요한 쿼리가 발생하게 된다. 이것을 N+1 문제라고 한다. 예를들어 1개의 요청에서, 불필요한 쿼리가 추가로 3개가 더 발생한다고 가정해보자. 이렇게 보면 문제라고 부르기 어려울 만큼 별게 아닌것 같지만, 여러개의 요청의 동시다발적으로 들어올때, 가령 십만개의 요청이면 십만개 * 3 개의 쿼리가 추가로 발생하게된다. N+1 문제는 쿼리의 증가로 인한 데이터베이스와의 통신 비용의 증가와 응답속도의 저하를 불러온다. 데이터가 많은 경우 성능저하는 ..