본문 바로가기

C#.NET

MSSQL LOCK

:::::[잠금(LOCK)의 크기(범위)]:::::

 

종류

기능

RID(ROWID)행단위

아무런 인덱스가 없을 때 한 행에 대해 LOCK걸림

KEY(INDEX) 

인덱스에 대해 LOCK이 걸릴 때

PAGE 

해당페이지(8KB)의 모든데이터나 인덱스에 LOCK

EXTENT 

8개의 페이지 모이면 1EXTENT가 되는데 이 EXTENT에 대해서 LOCK

TABLE 

하나의 테이블에 모든 행 열 인덱스 페이지 EXTENT에 대해서 LOCK

DATABASE 

전체 DATABASE에 LOCK보통 스키마 변경시 발생

 

:::::[MSSQL2005 에서 잠금 (LOCK)보기]:::::

EXEC SP_LOCK : 서버에걸린모든잠금(LOCK)를보여줌

EXEC SP_LOCK : @@SPID : 실행시킨세션에서걸고있는LOCK정보보여줌

EXEC SP_WHO : BLOCKING에대한정보를보여줌

 

블로킹(BLOCKING)

A라는 사용자가 특정 테이블에 잠금을 걸어놓은 상태에서 B라는 사용자가 A가 잠금을 걸어놓은 테이블에 잠금을 걸려고 할 때 블로킹 발생

 

허바사장님이 아래와 같은 작업을 실행시킴

SET IMPLICIT_TRANSACTION ON

DBCC USEROPTIONS

 

BEGIN TRAN

    DELETE FROM cloneRegion

    DELETE FROM cloneOrders

 

--송미리사용자가하는작업

--cloneRegion 테이블에테이블을Lock걸기

 

Begin Tran

    SELECT * FROM cloneRegion with(TABLOCK)

 

KILL 53(작업모니터에서 상태가 락걸린 프로세스ID 확인후 킬시켜준다.)

'C#.NET' 카테고리의 다른 글

[:::::비연결 Database 접근방법:::::]  (0) 2009.05.15
OleDb를 이용한 DataBase연결  (0) 2009.05.14
DataBase Access 기술동향  (0) 2009.05.13
Transaction 이용하기  (0) 2009.05.13
:::::[트랜잭션(Transaction)]:::::  (0) 2009.05.13
Stored Procedure를 이용한 DB Handling  (1) 2009.05.13
클래스 소멸자와 Garbage Collector  (0) 2009.05.08
클래스 멤버로의 접근제한하기  (0) 2009.05.08
NotifyIcon  (0) 2009.05.08
트리뷰(TreeView)  (0) 2009.05.07