java10 [성능 최적화] K6로 발견한 N+1 문제, 84개 쿼리를 6개로 줄여 응답속도 93% 개선기 - 2편 [성능 최적화] K6로 발견한 N+1 문제, 84개 쿼리를 6개로 줄여 응답속도 93% 개선기 - 2편서론이번 2편에서는 지난 [1편 링크] 에서 K6 부하 테스트를 통해 채팅 메시지 조회 API에서 심각한 N+1 문제를 해결하기 위한 구체적인 코드 개선 과정과, 그로 인해 얼마나 성능이 향상되었는지를 데이터로 확인해 보겠습니다.문제의 원인 : 반복 조회로 인한 N+1 쿼리부하 테스트를 통해 확인한 병목의 근본 원인은, 쿼리가 N+1 로 실행되는 문제였습니다.아래 코드 첫 번째 스크린샷에서 보시는 것처럼, 조회된 21개의 채팅 메시지 목록(List)을 스트림으로 처리하며 각 메시지에 대한 추가 정보를 개별적으로 조회하고 있었습니다.즉, 하나의 메시지(ChatEntity)를 처리할 때마다 아래 4개의 추가.. 2025. 8. 13. 스프링부트 JPA활용 2 - 웹 계층 개발(7) 목차 📌홈 화면 👀 회원 기능 👀 회원 등록 👀 회원 조회 📌상품 기능 👀 상품 등록 👀 상품 수정 👀 상품 조회 📌주문 기능 👀 상품 주문 👀 주문 내역 조회 👀 주문 취소 📌홈 화면 홈 컨트롤러 package jpabook.jpashop.controller; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @Slf4j public class HomeController { @RequestMapping("/") public String home(){ log.trace("트.. 2022. 6. 17. 스프링 컨테이너와 스프링 빈-스프링 핵심원리 기본 목차 스프링 컨테이너 생성 컨테이너에 등록된 모든 빈 조회 스프링 빈 조회 - 기본 스프링 빈 조회 - 동일한 타입이 둘 이상 스프링 빈 조회 - 상속 관계 BeanFactory와 ApplicationContest 다양한 설정 형식 지원 - 자바 코드,XML 스프링 빈 설정 메타 정보 - BeanDefinition 📌스프링 컨테이너 생성 // 스프링 컨테이너 생성 ApplicationContext ac //인터페이스 = new AnnotationConfigApplicationContext(AppConfig.class); //구현체(다형성 적용) ApplicationContext를 스프링 컨테이너라고 한다. ApplicationContext는 인터페이스이다. 스프링 컨테이너는 애노테이션 기반 자바 설정 클.. 2022. 4. 29. Java 자바 메모리 구조 자바 메모리 구조 Static , Heap, Stack 이란 출력(모니터), 연산(CPU), 저장(메모리) 메모리는 논리적으로 메모리가 떠 있는 시간에 따라 Static , Heap , Stack 으로 나눠 놨다. static 프로그램의 시작~끝 담당 (계속 메모리에 떠 있기때문에 부화가 큼) heap 동적할당 영역, 메모리에 떠 있다가 할 일이 다 끝나면 사라짐 (행위의 시작과동시에 실행) stack 행위에 대한 정보들을 저장하는 영역 (잠깐 떳다 사라짐) 자료형 메모리 구조 RAM(메모리)에 8바이트 크기의 메모리가 있다고 하면 메모리는 1바이트마다 0부터 7까지의 메모리 공간을 만들고 각 공간마다 이름을 붙여준다. 그리고 4byte크기인 자료형int를 int num = 10; 라고선언을 하면 컴퓨터.. 2022. 2. 14. Java JVM과 JDK 이해하기 컴퓨터를 사용하는 사용자가 직접 하드웨어에 데이터를 저장하는건 쉽지 않은 일 이기 때문에 사용자가 데이터를 입력하는 키보드의 데이터를 받은 운영체제가 중간에서 대신 하드웨어에게 데이터를 저장하라고 명령을내려 우리는 쉽게 데이터를 운영체제를 통해서 하드웨어에 저장할 수 있다. 사용자(키보드,마우스) ->운영체제 ->하드웨어 그리고 프로그래밍을 하는 개발자는 마우스와 키보드를 대신해서 운영체제에 명령할 수 있는 (자바)같은 프로그래밍 언어를 배워서 os 에 명령을 내린다. 언어(자바) -> os ->하드웨어 JDK 자바라는 언어로 os에 명령을 내릴때는 JDK(JAVA Development kit) 자바 개발 킷이라는 툴을 통해서 운영체제에 명령을 내릴 수 있다. JDK 환경변수 하는 이유 터미널또는 cmd.. 2022. 2. 10. jsp/servlet #Cookie 옵션 .setMaxAge .setMaxAge 쿠키를 세션유지기간을 설정하여 설정한 기간동안은 쿠키가 브라우져가 닫쳐도 만료되지않고 유지될수 있게 해주는 옵션이다. 쿠키객체명.setMaxAgr(초단위로); 쿠키객체명.setMaxAgr(24*60*60); // 60초를 (1분) * 60분 (1시간) *24시간(하루) 로 쿠키의 만료시간을 하루로 설정할 수있다. valueCookie.setPath("/calc2"); //value쿠키를 calc2에만 저장 valueCookie.setMaxAge(24*60*60); //value쿠키를 만료기간 24시간 .setMaxAge를 설정하기 전 .setMaxAge의 유지기간을 하루로 설정해주어 브라우저가꺼져도 하루동안 쿠키가 유지된다. 2022. 1. 25. 이전 1 2 다음