질의 편집기 사용중 무한 루프(? - 질의 수행중이 10,20분 이상 수행중) 발생 질문 입니다.
아래의 내용의 문제 발생시 문제 해결을 할수있는 또는 원인을 확인할수 있는 방법을 문의 드립니다.
먼저 정상적으로 동작하는 질의 문으로 설명을 해보겠습니다.
CUBRID 매니져의 질의 편집기로 작성 및 테스트 했습니다.
SELECT tableA.testID , tableB.testID01 -- 조인 조건 값
,tableB.original, tableB.plotMode, tableB.plotPP -- 입력값
,func_test('inputValue', nvl(tableB.original,''), nvl(tableB.plotMode,''), nvl(tableB.plotPP,0)) as func -- 저장 프로시져
FROM tableA, tableB
WHERE tableA.testID = tableB.testID01
위와 같은 질의 문은 정상적으로 동작합니다.
간단히 설명드리면
먼저 tableA와 tableB의 조인 입니다.
조인 조건은 tableA.testID = tableB.testID01 이고요
첫번째 줄에 확인차원에서 조건 두값이 보여 집니다.
세번째 줄에 저장 함수를 만들어서 결과를 가져 오도록하였고요
입력은 문자 세개와 숫자 한개입니다.
입력값들은 두번재 줄에 보여 지게 만들었고요.
저장프로시져의 동작을 확인코자 자바 코드에 로그 화일을 생성하여 모든 처리 단계를 기록하도록 만들었습니다.
위와 같이 동작시키면 결과가 아주 잘나옵니다.
로그 기록도 정확하게 잘 나오고요
여기에서 조금 바꾸어
조건을 바꾸고 저장함수 부분을 제외 하고 동작해보았습니다.
SELECT tableA.testID , tableB.testID02 -- 조인 조건 값
,tableB.original, tableB.plotMode, tableB.plotPP -- 입력값
FROM tableA, tableB
WHERE tableA.testID = tableB.testID02 -- testID01 => testID02
이렇게 하면 원하는 결과가 정확히 나옵니다.
함수에 입력되는 입력값들도 잘못된거 하나 없이 정확히 나오고요
여기에 저장 함수를 추가 했습니다.
SELECT tableA.testID , tableB.testID02 -- 조인 조건 값
,tableB.original, tableB.plotMode, tableB.plotPP -- 입력값
,func_test('inputValue', nvl(tableB.original,''), nvl(tableB.plotMode,''), nvl(tableB.plotPP,0)) as func -- 저장프로시져
FROM tableA, tableB
WHERE tableA.testID = tableB.testID02
이렇게 하면 무한 루프로 들어 갑니다.
<문제 상태 설명>
-. 일단 문제 파악을 위해 저장함수에 입력값들을 하나씩 직접 입력해보았습니다. (모든 입력값 확인함)
call func_test('inputValue1', 'inputValue2', 'inputValue3', inputValue4)
이렇게 모든 입력값을 확인 한결과 모두 잘 동작했습니다.
-. 저장함수에 동작 과정을 확인하고자 로그 화일을 기록토록 되어 있는데 로그 화일의 기록이 전혀 없습니다.
즉 저장함수 부분은 동작도 하지 않는 겁니다.
함수 동작 이전에 이미 무한루프 상태로 빠진것으로 추측됩니다.
-. 무한루프 상태에서 시스템 상태
프로세스부분에서 'cub_server.exe'의 CPU 부분이 50% 정도로 높아집니다. (메모리와 핸들의 상태는 크게 변화 없음)
'cub_cas.exe' 의 갯수와 메모리 핸들의 변화도 크게 없음
-. 최장 25분까지 기다려 보았습니다. 결과 처리가 늦어 지는것이 아닌가해서요
계속 질의 수행중이였으며 마친가지로 로그 화일도 생성되지 않은 상태가 유지되었습니다.
<질문>
-. 질의 수행중에 중지할수 있는 방법이 없는지 궁금합니다.
(무한루프에 빠지면 매니져를 Window 작업 관리자로 강제 종료한 후 cubrid를 껐다 키고 있습니다.)
-. 위의 상황에서 원인을 찾고자 또는 해결 하려면 어떻게 접근해야 되는지
아니면 도움이 될만한 툴들이 있는지 알고자 합니다.