반응형

이번에 서비스 단에서 DB에 접근하여 데이터를 조회할 때 DB에서 데이터를 가져오는 시간이 너무 오래 걸렸다.

대략 가져와야 하는 데이터의 건수는 약 20만건이었고, 따로 인덱스는 생성하지 않았다.

 

개발환경은 아래와 같다.

 

개발환경

Eclipse 2022-12

MyBatis

Spring 4.3.25

jdk 1.8

 

약 20만건의 데이터를 조회하는데 걸렸던 시간은 3분 32초 가량 걸렸다.

데이터를 조회하는데만 최대한 많이 봐줘서 1분만 넘어가도 속이 터지는데, 3분이라는 시간은 너무나도 길었다.

 

그래서, 이것저것 찾아본 게 MyBatis에서 fetchSize의 기본값은 10이다.

즉, 약 20만건의 데이터를 조회할 때 DB 조회를 하는 횟수는 20,000번을 조회해 온다.

 

그래서, 조회를 해올 때 시간을 줄이기 위해서는 MyBatis에 fetchSize를 높게 주는 것이다.

 

원래 MyBatis의 fetchSize는 설정을 하지 않을 경우 10으로 설정이 되어 있는데, 이것을 1000 ~ 2000 사이로 주는 것이다.

 

아래와 같이, xml 파일에서 select 태그 안에 옵션으로 fetchSize="2000"으로 설정했다.

<select id="TEST_LIST" parameterType="Map" resultType="DataMap" fetchSize="2000">
    SELECT DESC
      FROM TEST
</select>

 

 

위의 쿼리로 테스트를 진행했다.

 

1. fetchSize 1000으로 설정

fetchSize를 1000으로 설정했을 때

 

15:50:34.494
15:50:46.006 

 

11초 가량 걸렸다.

 

 

2. fetchSize 2000으로 설정

fetchSize를 2000으로 설정했을 때

 

15:53:11.424
15:53:20.609

 

9초 가량 걸렸다.

 

그러니까 대용량 데이터를 가져올 때는 MyBatis에서 fetchSize를 설정하면 된다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

코집사님의
글이 좋았다면 응원을 보내주세요!

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*