티스토리 뷰

이번주에 약 2천만건 데이터를 처리하는 간단한 어플리케이션을 만들었는데, myBatis를 처음 이용해서 만들어 봤다.
음, 기존 iBatis와 크게 달라지진 않았지만 몇몇 config 규격이나 이름 등이 변경된 부분이 있어서 초반 설정에 좀 헷갈렸다.
설정부터 간단한 실행까지 해 보는 건 조만간 다시 정리해서 올리기로 하고.. 지금 이 글은 mapper.xml에 오라클 힌트가 포함된 쿼리를 넣을 때 발생했던 오류로 너무 헛다리를 짚어서리 정리차원에서 적는 글이다.

2천만건 데이터를 정해진 row만큼 반복적으로 읽어서 처리하는데, 백만건 이상이 되면 조회시간이 많이 증가하여 이리저리 고민한 끝에 조건절에 들어가는 컬럼의 인덱스에 힌트를 주는 팁이 있어 이를 이용해 보기로 했다.
참고 블로그(http://www.underroom.com/9336)

SELECT /*+ INDEX_ASC or INDEX_DESC(A {PTL_USER_PK}) */

뭐 대략 이렇게 주는 건데, sql-developer에서 실행시키니 조회시간이 엄청 단축이 되었다. 오우~ +.+
DB 쿼리 튜닝에 대해서는 그다지 많이 알지 못해 이리저리 구글링 하다가 얻은 정보치고는 효과 쵝오~~ 그래서 해당 쿼리를 mapper.xml에 넣고 실행시켜 보니.. 두둥~ 아래 메세지가 튕겨져 나온다.. ㅡㅡ;

### The error occurred while setting parameters
### Cause: java.lang.NullPointerException
 at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:77)
 at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)

뭐래? 된장.. 기껏 힘들게 쿼리 찾아서 해결되나 싶었는데, 믿었던 myBatis에서 이런 메세지를.. 흑.. 그래서 해당 오류 메세지를 또다시 검색해 보니, mapper.xml을 iBatis(myBatis)에서 내부적으로 변환시 주석처리의 경우 반드시 /* 다음에 공백을 줘야 한다고 되어 있다.. ㅡㅡ; 무슨 말도 안돼.. 그럼 myBatis에서는 오라클 힌트 사용 못하는 거냥? 흑..
특수문자 때문에 그런가 해서  <![CDATA[ 로 감싸 보아도 결과는 마찬가지.. ㅡㅜ;
분명 다른 이유가 있을텐데.. 좀더 구글링을 해 보고 싶었지만 시간이 없는 관계로 myBatis를 쓰지 않고 일반 DB쿼리를 이용하여 하기로 결정.. 잽싸게 코드를 수정했다. 간단하게 PreparedStatement 를 이용해 만들어서 실행~!! 두둥.. 헉.. 이번에 요런 메세지를 내뱉는다..

java.sql.SQLException: 해당 위치에 지원되지 않는 SQL92 토큰: 70: PTL_USER_PK

응? 이건 또 뭐냥.. 아씨~ 다시 구글링~ 하지만 관련 내용이 좀처럼 없다.. 흑.. 시간도 없는데 왜이리 태클이 들어오는지..
열심히 찾던 중.. 오라클 힌트 관련해서 정리한 블로그(http://piyoro.tistory.com/39)에서 아래 내용을 보았다.

select   /*+ index( idx_col_1 ) */

           name, age, hobby

from     member

어, 힌트에 중괄호가 없어도 되나..? 그래서 한번 중괄호를 소괄호로 바꾸고 sqldeveloper에서 실행해 보았다.
뭐 요런식으로..  SELECT /*+ INDEX_ASC or INDEX_DESC(A (PTL_USER_PK)) */

어라.. 실행이 된다. 아주 잘된다.. 혹시 이것 땜시롱..? 조심스레 어플에 있는 쿼리문도 소괄호로 바꾸고 실행.. 헉.. 된다..
그래서 myBatis의 mapper.xml도 한번 바꿔보고 실행.. 뜨악~~ 된다.. 제길슨! 주석이고 뭐고 문제가 아니었다.. ㅜㅜ;
아, 이런 허무.. 오늘 오후는 이것땜시롱 거의 다 날렸다는.. 너무 한이 맺혀 이렇게 글로도 남긴다.. 혹시라도 나와 같은 헛다리 짚는 분들이 없기를 바라며.. (뭐 이미 다 알고 있었다면야 할말 없음요~~ ㅡ.ㅡa) 태그에  'SQL92 토큰' 도 추가시켜야지.. ㅡㅜ;

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
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
글 보관함