개발/DB

MS-SQL DB잠겼을때 exec sp_lock 방법 안내

사과수박 2015. 1. 13. 15:39
MS-SQL DB잠겼을때 exec sp_lock 방법 안내

 

DB가 갑자기 느려졌을 경우에 확인 할 수 있는 방법 중 하나 입니다.

우선적으로

잠기는 종류가 크게 두가지로 나뉩니다.

 

공유잠금(shared lock)과 배타적 잠금(exclusive lock) 으로 나뉘어요.

전 lock 프로시저를 활용하는 방법으로 안내 해드리겠습니다.

 

아래와 같이  exec sp_lock 쿼리로 lock 정보를 확인하실 수 있습니다.

보통 spid 가 중복으로 여러개 붙은 것들은 kill 해주시면 되긴하지만

MODE의 값을 확인하고 KILL 시키면 더 좋겠죠?

 

1. 아래 컬럼값들에 대해 설명 해드리도록 하겠습니다.

 

SPID 

->잠금을 요청하는 프로세스의 세션ID

DBID

-> 데이터베이스의 식별번호

OBID

-> 개체의 식별번호

INDLD

-> 인덱스의 식별번호

TYPE

-> 잠금유형

RESOURCE

-> 리소스 식별값

MODE

-> 잠금

STATUS

-> 잠금요청상태 

 

 

2. MODE 값 상세 설명

 

S-> 공유 잠금

U-> 업데이트 잠금

X-> 독점 잠금

IS-> 의도 공유

IU-> 의도 업데이트

IX-> 독점 의도

BU-> 대량 업데이트 

 

 

 3. 잠김 값의 수행된 쿼리정보 확인 하는 방법

 

dbcc inputbuffer (spid)

EventInfo 쿼리 정보 나옴

 

 

4. 좀더 정확한 정보를 확인 하는 방법

 

exec sp_who2 spid

 

 

5. 프로시져 죽이는 방법

 

kill (spid)