본문 바로가기
web

대용랑 데이터 조회 처리

by Younji! 2016. 4. 28.

iBatis에서 6만건을 조회해서 ArrayList 로 메모리에 담아 엑셀로 다운로드 작업하는데 1분 20초가 걸렸다.


운영 DB에는 100만건이 있는데, 중간에 뻗어버린다.


구글링해본 결과, 

- fetchSize

  부분범위처리라고 해서 ArraySize를 조정해서 Fetch Call을 감소해서 대량으로 데이터를 내려받는 것. 블록 I/O도 감소. 로컬환경에서는 6만건 처리가 확연히 빨라졌지만, 개발 서버 WAS에서 실행했을 때 OOM 발생.

뭔가 잘못설정하긴 한 것 같다. (fetchSize 100과 600 차이는 나지 않았다)

- rowHandler

https://ibatis.apache.org/docs/java/user/com/ibatis/sqlmap/client/event/RowHandler.html

ibatis에서 제공하는 row 마다 처리해주는 이벤트 핸들러(myBatis에넌 ResultHandler로 변경)

queryWithRowHandler 메소드를 사용해서 많은 로우를 한번에 메모리에 로드하지 않고 한 로우씩 효율적으로 로드해줌.

sqlMap.queryWithRowHandler("getUserInfo", null, new RowHandler())

- batch



'web' 카테고리의 다른 글

ElasticSearch Index 질의(w/ python)  (0) 2022.06.07
Spring Cloud with Aws Secrets Manager  (0) 2020.02.03
ThreadPoolTaskExecutor RejectedException 발생  (0) 2017.05.31

댓글