mybatis에서 쿼리의 변수와 관련한 속도 관련 질문입니다.
- 작성자 :
- 문*덕
- 작성일 :
- 2015-01-28 22:35:32
- 조회수 :
- 3,736
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
개발환경은 egov 3.0 이고 mybatis 를 사용하였습니다.
DB는 오라클 11g 입니다.
sql-mapper-config.xml 에는 카멜표기법 자동변환만 세팅해두었습니다.
1. 로컬환경에서는 3초정도 나오는 쿼리가 있습니다. (아래부터 정상은 3초정도를 의미)
운영서버에 포팅하고 적용하니 4분정도 나옵니다. 그래서 java 에서 jdbc 로 했을 경우로 정상적으로 됩니다.
결정적으로 query.xml 에서 파라미터들을 #{param,jdbcType=VARCHAR} 로 하였습니다(다수의 파라미터)
그랬더니 4분정도가 소요되고 테스트로 파라미터들을 직접 하드코딩 해보니 정상적으로 작동합니다.
여기저기 검색해본결과 #{param} 말고 ${param} 해 보았는데 4분대의 속도가 나옵니다.
단순히 $가 아닌 다른 설정부분이 있나요? 그리고 ,jdbcType=VARCHAR 부분을 명시하지 않아도 괜찮나요?
(지난번 null 체크 부분에서 답변에 사용하라고 하셔서 모든 파라미터에 타입에 맞게 적용중입니다)
톰캣의 문제도 아니고.. 쿼리에서 파라미터를 하드코딩이 아닌 변수로 처리하면 3초짜리가 4분이 되어 버립니다.
2.만약 ibatis 로 했을 경우 설정에서 max... 3가지설정(maxSessions, maxRequests 등) 을 통해서 속도향상을 얻을 수 있을까요?
도와주세요..
DB는 오라클 11g 입니다.
sql-mapper-config.xml 에는 카멜표기법 자동변환만 세팅해두었습니다.
1. 로컬환경에서는 3초정도 나오는 쿼리가 있습니다. (아래부터 정상은 3초정도를 의미)
운영서버에 포팅하고 적용하니 4분정도 나옵니다. 그래서 java 에서 jdbc 로 했을 경우로 정상적으로 됩니다.
결정적으로 query.xml 에서 파라미터들을 #{param,jdbcType=VARCHAR} 로 하였습니다(다수의 파라미터)
그랬더니 4분정도가 소요되고 테스트로 파라미터들을 직접 하드코딩 해보니 정상적으로 작동합니다.
여기저기 검색해본결과 #{param} 말고 ${param} 해 보았는데 4분대의 속도가 나옵니다.
단순히 $가 아닌 다른 설정부분이 있나요? 그리고 ,jdbcType=VARCHAR 부분을 명시하지 않아도 괜찮나요?
(지난번 null 체크 부분에서 답변에 사용하라고 하셔서 모든 파라미터에 타입에 맞게 적용중입니다)
톰캣의 문제도 아니고.. 쿼리에서 파라미터를 하드코딩이 아닌 변수로 처리하면 3초짜리가 4분이 되어 버립니다.
2.만약 ibatis 로 했을 경우 설정에서 max... 3가지설정(maxSessions, maxRequests 등) 을 통해서 속도향상을 얻을 수 있을까요?
도와주세요..
A
안녕하세요. 문종덕님.
일반적인 상황은 아니신 것 같습니다.
다만, 파라미터의 타입 중에 지정된 타입과 다른 java 타입이 있는 경우에는 속도의 저하가 발생하는 것 같습니다.
그외에는 JDBC Driver가 실제 DBMS 버전가 다른 경우 등의 문제일 수 있을 것 같습니다.
이 경우는 org.springframework와 org.apache.ibatis, org.mybatis.spring 3개의 logger에 대하여 DEBUG level로 지정한 후에 어느 부분에서 속도 차이가 발생하는지 확인이 필요할 것 같습니다.
가능하시면 JProfiler와 같은 APM 툴을 통해 확인도 가능합니다.
그럼, 즐거운 하루되십시오.
감사합니다.
일반적인 상황은 아니신 것 같습니다.
다만, 파라미터의 타입 중에 지정된 타입과 다른 java 타입이 있는 경우에는 속도의 저하가 발생하는 것 같습니다.
그외에는 JDBC Driver가 실제 DBMS 버전가 다른 경우 등의 문제일 수 있을 것 같습니다.
이 경우는 org.springframework와 org.apache.ibatis, org.mybatis.spring 3개의 logger에 대하여 DEBUG level로 지정한 후에 어느 부분에서 속도 차이가 발생하는지 확인이 필요할 것 같습니다.
가능하시면 JProfiler와 같은 APM 툴을 통해 확인도 가능합니다.
그럼, 즐거운 하루되십시오.
감사합니다.