WaitFor

-- MSSQL 2009. 11. 26. 13:49
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
PRINT CONVERT(CHAR(19), GETDATE(), 120)
WAITFOR DELAY '00:00:10'
PRINT CONVERT(CHAR(19), GETDATE(), 120)

2009-11-26 11:49:28
2009-11-26 11:49:38

C언어의 Sleep처럼 부하에 영향이 덜한건지는 좀 더 연구해봐야겠지만,아마 유추하건데 Sleep이랑 같을 것 같다.

추가) 2011.03.30

WAITFOR 문을 실행하는 동안 트랜잭션이 실행되며 같은 트랜잭션에서 다른 요청을 실행할 수 없습니다.

실제 시간 지연은 time_to_pass, time_to_execute 또는 timeout에 지정된 시간과 다를 수 있으며 서버의 작업 수준에 따라 달라집니다. 시간 카운터는 WAITFOR 문과 연결된 스레드가 예약된 시간에 시작합니다. 서버가 사용 중이면 스레드가 즉시 예약되지 않을 수도 있으므로 시간 지연이 지정된 시간보다 길어질 수 있습니다.

WAITFOR는 쿼리의 기능을 변경하지 않습니다. 쿼리가 행을 반환할 수 없을 경우 WAITFOR는 계속 대기하거나 TIMEOUT(지정된 경우)에 도달할 때까지 대기합니다.

WAITFOR 문에서는 커서를 열 수 없습니다.
WAITFOR 문에서는 뷰를 정의할 수 없습니다.

쿼리가 query wait 옵션을 초과하면 WAITFOR 문 인수를 실행하지 않고 완료할 수 있습니다. 구성 옵션에 대한 자세한 내용은 쿼리 대기 옵션을 참조하십시오. 활성 및 대기 프로세스를 보려면 sp_who를 사용합니다.

각 WAITFOR 문에는 연결된 스레드가 있습니다. 같은 서버에 많은 WAITFOR 문이 지정된 경우 많은 스레드가 이러한 문의 실행을 대기하느라 정체될 수 있습니다. SQL Server는 WAITFOR 문과 연결된 스레드의 수를 모니터링하고 서버에 스레드 부족이 발생하기 시작할 경우 이러한 스레드 중 일부를 임의로 선택하여 종료합니다.

WAITFOR 문이 액세스를 시도하는 행 집합에 대한 변경을 방지하는 잠금을 보유한 트랜잭션 내에서 WAITFOR를 사용하여 쿼리를 실행하면 교착 상태가 발생할 수 있습니다. SQL Server는 이러한 시나리오를 식별하고 이러한 교착 상태가 존재할 가능성이 있는 경우 빈 결과 집합을 반환합니다.

출처 : http://msdn.microsoft.com/ko-kr/library/ms187331.aspx

'-- MSSQL' 카테고리의 다른 글

GetUTCDate()  (0) 2010.01.05
모든 Stored Procedure 내의 검색  (0) 2009.12.21
TempDB에 대한 동시성 강화  (0) 2009.11.23
온라인페이지 복원 테스트  (0) 2009.11.16
MSSQL2005에서 대량데이터 Delete  (0) 2009.10.28
posted by 어린왕자악꿍