여러 방법으로 시도 해봤으나 도저히 해결이 안되서 여기다 한번 올려서 해결책을 고민 하고자 합니다.
현재 상황은 이렇습니다.
JOB 에이전트를 통해 특정 프로시저를 수행해서 전날의 데이터를 집계 하는 방식으로 데이터를 B테이블에 INSERT 하고 있습니다.
근데 처음 상황은 데이터 ROW수가 많음에 따라 SELECT 되는 A 테이블의 통계가 깨지는 현상 때문인가 싶어서 별도의 JOB을 추가하여
A라는 테이블의 통계가 업데이트 되도록 JOB을 추가하여 다음날 확인해봤지만 상황은 여전히 쿼리 타임 아웃이 발생합니다.
쿼리 튜닝 부분까지 수행했는데 마찬가지 현상이 나타나고 있다면 어떤 부분을 확인해야 하나요?
Comment 6
-
향지
2015.08.12 11:42
-
나는짱이야
2015.08.12 13:06
nolock구문은 이미 구현되어 있구요. 에러 메시지는 다음과 같습니다.
SQLNCLI10"에서 행을 인출할 수 없습니다. [SQLSTATE 42000] (오류 7330) 연결된 서버 "~~~ OLE DB 공급자 "SQLNCLI10"이(가) 메시지 "쿼리 제한 시간이 만료되었습니다."을(를) 반환했습니다. [SQLSTATE 01000] (오류 7412)
이런 오류 입니다.
-
minsouk
2015.08.12 15:35
USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N'urServer', @optname=N'query timeout', @optvalue=N'0'
GO이런 옵션을 주시면 어떨지요?
-
나는짱이야
2015.08.12 20:24
해당 옵션을 주게 되면 무제한 실행시간으로 변경되게 되는데 부하가 걸릴 위험이 있어 보이는데 아닌지요?
-
minsouk
2015.08.12 23:11
어떤 목적으로 몇초간의 쿼리타임아웃을 설정하는것은 엔드유저가 결정하는 겁니다 어플에서 디비서버에 쿼리 날릴때는 얼마로 설정하세요? 똑같은데.... -
나는짱이야
2015.08.13 08:53
해당 부분의 경우 어플에서 수행되는 쿼리는 아니고 SSMS JOB을 통해서 이루어지게 됩니다.
lock 때문에 time out 나시는건가요?
lock 때문이면 nolock으로 읽어서 한번 해보시고...
아니면 에러 문구 한번 보여주시면 좋을것 같습니다.