Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Parallel Old GC
- 배치
- 스레드
- Transaction Pattern
- spring batch
- Resilinece4j
- 디자인 패턴
- Serial GC
- Spring Boot Actuator
- 생산자 소비자 패턴
- The law of Demeter
- java 정렬
- TypeScript
- 알고리즘
- 키클락
- 멀티스레드
- saga pattern
- MSA
- zipkin
- 체인 패턴
- thread
- 디자인패턴
- Action Pattern
- spring cloud
- 사가 패턴
- Java
- 스프링 배치
- JPA
- 타입스크립트
- Spring Cloud Netfilx Eureka
Archives
- Today
- Total
PSD( Private-Self-Development )
OSIV( Open Session In View ) 성능 최적화 본문
OSIV 란?
DB 커넥션 유지를 언제까지 할 것인가를 설정하는 값이다.
트랜젝션 시작 시(보통은 Service 단) 영속성 콘텍스트와 DB 커넥션을 연결하고
이를 OSIV 설정 값에 따라 언제까지 할 것인가를 설정한다.
왜 연결을 유지해야 하는가?
지연 로딩을 위함(영속성 콘텍스트 유지)이다.
지연 로딩으로 인해 실 엔티티 데이터를 조회하기 위해 연결을 유지해 둬야 한다.
단점
DB 커넥션을 너무 오래 유지하면 실시간 트래픽이 중요한 서비스의 경우 커넥션이 모자랄 수 있다.
이는 곳 장애로 이어진다.
설정 값에 따른 동작
- spring.jpa.open-in-view : true(기본값)
- Response 가 사용자에게 완전히 반환될 때까지 영속성 콘텍스트를 유지한다.
- 너무 오래 DB 커넥션을 유지한다는 단점이 있다.
- spring.jpa.open-in-view : false
- Transaction 종료 시(Service 단 까지) DB 커넥션을 닫고 영속성 콘텍스트를 사용하지 않는다.
- 지연 로딩을 트랜잭션 안으로 넣어야 하는 단점이 있다.
OSIV 설정을 끈 경우의 단점 보완법
Command(핵심 비즈니스 로직)와 Query(화면이나 API 맞춘 서비스 - 읽기 전용 Transaction) 서비스를 따로 판다.
참고
'Backend > JPA' 카테고리의 다른 글
JPA 조회 성능 최적화 (0) | 2022.12.01 |
---|---|
JPA 의 쿼리 작성 라이브러리 (0) | 2022.10.20 |
JPA 값 타입 (0) | 2022.10.14 |
JPA 의 프록시, 지연 로딩, 즉시 로딩 (0) | 2022.10.12 |
JPA 의 상속 (0) | 2022.10.11 |