새소식

DataBase/MSSQL

[MSSQL] Lock 걸린 쿼리 확인하고 해제 및 방지하기

  • -

쿼리를 실행하다 보면 간단한 쿼리인데도 실행되지 않는 경우가 종종 발생하곤 합니다.

이럴때 가장먼저 확인해야 하는것이 해당 쿼리에 대해 Lock의 발생 여부입니다.

 

 

Lock이 걸린 spid를 확인

EXEC SP_LOCK

Mode가 X로 되어있는 spid를 확인합니다.

 

 

Lock이 걸린 쿼리내용 확인

DBCC inputbeffer(spid)

위에서 식별된 spid를 넣고 Lock이 걸린 쿼리 내용을 확인합니다.

 

 

Lock이 발생한 host 찾기

EXEC SP_WHO spid

spid를 넣고 어떤 host에서 Lock이 발생한지 확인합니다.

 

 

Lock 제거

EXEC KILL spid

 

 

Lock이 발생한 경우 일부 테이블에 대한 액세스가 불가하기 때문에 꼭 제거하도록 합시다.

 

트랜잭션이 필요없는 대량의 데이터를 조회할 경우에는 아래처럼 WITH(NOLOCK) 옵션을 걸어주거나

SELECT * FROM Emp WITH(NOLOCK)

 

아래의 구문을 쿼리 맨 앞에 넣고 실행하면 Lock 발생 여부와 관계없이 테이블 조회가 가능합니다.

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.