분류 전체보기 2

트랜잭션

● 사용자가 댓글을 등록하는 트랜잭션 흐름은 다음과 같다 ● 트랜잭션 격리 수준에 따라서 발생하는 이상 현상은 다음과 같다 ● READ UNCOMMITED 격리 수준 : Dirty Read 발생 트랜잭션 흐름 (MySQL InnoDB 기준)- 트랜잭션 A에서 아직 COMMIT 되지 않았는데, 트랜잭션 B에서 COMMIT 되지 않는 트랜잭션 A의 데이터를 조회를 했다- 이떄 Dirty Read 가 발생됐다 해결방법 : READ COMMITED 이상의 격리 수준을 사용하여 Dirty Read를 방지한다 ● READ COMMITED 격리 수준 : Dirty Read 해결 트랜잭션 흐름 (MySQL InnoDB 기준) - 트랜잭션 A에서 데이터가 UPDATE 될 때 언두 로그에 변경 전 데이터가 저..

카테고리 없음 2025.05.07

N + 1, 인덱스

JPA N + 1 문제점● N + 1 문제 발생 코드 (특정 게시글에 있는 댓글 (댓글 + 대댓글) 을 전체 조회할떄)1. Board 엔티티를 가져올떄 쿼리가 발생 (1개)2. Comment 엔티티를 가져올떄 쿼리가 발생 (1개)이후 Comment 엔티티를 DTO 로 변환시킨다3. comment.getUser().getId() 를 실행할떄 프록시 객체가 실제 객체로 초기화되면서 쿼리가 발생한다 (N개)3.1 comment.getUser().getName() 을 실행할떄 1차캐시로 인해 쿼리가 발생하지 않는다3.2 comment.getBoard.getId() 에서도 이미 호출된 Board 엔티티를 가져왔기 떄문에 쿼리가 발생하지 않는다3.3 이후 Comment엔티티 안에 포함되어있는 replyCommen..

카테고리 없음 2025.05.05