특정 퀴리를 날리면 결과를 가져 오지 못합니다.
DB서버 CPU는 100% 차구요 ㅠㅠ
쿼리는 JDBC 연결로 모바일 어플에서 사용하는 것인데..
평소에는 잘 돌아가다가 순간적으로 데이터를 불러오지 못하고 먹통이 됩니다.
(다른 퀴리는 아무이상없이 잘돌아갑니다..)
참조 하는 테이블 크기가 크긴 한데(약 700백만 건)
인덱스를 몇개 잡아서 놔서
실행시간이 QA에선 1초도 안걸립니다.
처음에는 이것 저것 원인을 찾아 봤습니다.
인덱스가 깨져서 그런것 같기도 해서..(데이터삽입/수정이 자주 일어나는 테이블이라.)
문제의 테이블을 인덱스를 지우고 다시 잡아줘도 소용없었구요
근데 인덱스가 깨지면 ASP나 QA에서도 데이터를 불러오는데 문제가 생겨야 되지 않나요?
ASP나 QA는 데이터를 잘 불러오는데 JDBC만 데이터를 못불러오는지..
JDBC도 최신드라이버로 깐건데..허참
.프로파일러에서도 JDBC로 들어오는 쿼리는 실행속도가 엄청 늦게 잡힙니다.
도저히 이유를 알수가 없네요..
권한 문제도 아닌것 같고..
혹시 저희와 같은 경험을 하신 분이 계신가요?
계시면 어떻게 해결하셧는지 답글 부탁드립니다.
경험이 없스시더라도 짚히시는 바가 있으시면 답글 주시면 감사하겠습니다.
저희쪽 개발환경은
- 윈도우서버2008 64bit
- MSSQL2008R2
- jboss
입니다.
Comment 3
-
minsouk
2014.02.03 18:43
테이블 컬럼 데이터 타입을 varchar 로 만들면, jdbc 로 연결하면 unicode false 옵션을 connection 설정에 안주면 nvarchar 로 인자가 들어오게 됩니다. 그러면 형변환에 의해 인덱스를 사용하지 못하게 됩니다. 이게 jdbc 사용할 때 일반적으로 많이 발생하는 실수 입니다.
-
김준형_283549
2014.02.09 18:03
minsouk/그러면 인덱스 잡히는 컬럼 타입을 vachar에서 char 로 바꾸면 해결이 될까요?
도움이 될지 모르겠는데...
"실전 SQL Server MVP 61"이라는 책의 39번째 장에
"JDBC for SQL Server 튜닝"이라는 내용이 있습니다.
김모씨의 아들 모정선님께서 쓰신 글이네요.