인프런 커뮤니티 질문&답변
em.persist에서 쓰기 지연 SQL 저장소의 성능에 관한 질문이 있습니다.
작성
·
417
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
영속성 컨텍스트 2 강의에 12분쯤 나오는 그림을 보면서 든 생각입니다.
예를 들어 회원 가입이나 게시글 및 댓글 올리기 같은 경우에는 insert가 하나씩 들어갈 것 같아 1차 캐시나 쓰기 지연 SQL 저장소에 차곡차곡 쌓이는 일이 없을 것 같은데요. 만약 한 트랜잭션 안에서 대량의 데이터를 select 해서 insert 하는 경우, 그런 데이터의 양이 1만건, 10만건을 넘어간다고 하면 1차 캐시 및 쓰기 지연 SQL 저장소에 10만건을 쌓아놓고 커밋할 때 DB에 차례대로 한 줄 씩 저장이 될 것 같습니다. 그럴 때 메모리가 터진다거나, 속도가 느려진다거나 과부하가 걸려 성능 제한이 걸리는 경우가 있을 것 같은데 이런 경우를 대비해서 따로 처리해야 하는 로직이나 개념이 있다면 알고 싶습니다!
퀴즈
JPA에서 영속성 컨텍스트는 어떤 역할을 하는 핵심 개념일까요?
객체와 테이블의 매핑 정보 정의
엔티티를 관리하고 DB와 동기화하는 환경 제공
SQL 쿼리 직접 작성 및 실행
데이터베이스 연결 풀 관리
답변 3
0
0
0
예를 들어 100만건이 들어있는 데이터를 limit을 두지 않고 List<Table> result = em.createQuery("select t from table t", Table.class).getResultList();
이런 식으로 사용하는 건 JPA라도 성능에 많이 좋지 않을 것으로 예상됩니다. 만약 전체 데이터가 꼭 필요한 경우라면? limit 을 두고 분산 처리를 무조건 하는 건지... 보통의 경우 실무에서는 어떤 식으로 해결하는지도 궁금합니다!!





