DB Lock - 2 intention lock

CH_Hwang·2022년 12월 18일
0

DB

목록 보기
2/2
종류내용
shared lock(= S Lock)여러 transaction이 동시에 같은 row에 S lock을 걸 수 있다.
S lock이 걸려있는 row에 다른 transactional X lock을 걸 수 없다.
( 다른 transaction이 읽고 있는 row를 수정/삭제 할 수 없다.)
exclusive lock (= X Lock)X lock이 걸려있는 row에는 다른 transaction이 S/X lock을 모두 걸 수 없다.
( 다른 transaction이 수정/삭제하고 있는 row를 읽기/수정/삭제 for update 할 수 없다. for update가 아닌 읽기는 가능하다.)
Intention Shared Lock (= IS Lock)Table-level Lock
row에 대해서 나중에 어떤 row-level 락을 걸 것을 알려주기 위해 미리 table-level에 걸어두는 lock
transaction이 shared lock을 잡을 의도가 있음을 의미
Intention Exclusive Lock (IX)Table-level Lock
row에 대해서 나중에 어떤 row-level 락을 걸 것을 알려주기 위해 미리 table-level에 걸어두는 lock
transaction이 exclusive lcok을 잡을 의도가 있음을 의미

위와 같이 종류가 있고 아래는 그 4가지 종류의 lock 간의 상관관계를 보여준다.

XIXSIS
X충돌충돌충돌충돌
IX충돌허용충돌허용
S충돌충돌허용허용
IS충돌허용허용허용

Intention Lock

SELECT … LOCK IN SHARE MODE 구문이 실행되면

  • Intention Shared Lock (IS Lock) 이 테이블에 걸림
  • row-level 에 S-Lock이 걸림

SELECT … FOR UPDATE, INSERT, DELETE, UPDATE 구문이 실행되면

  • Intention exclusive lock (IX Lock)이 테이블에 걸림
  • row-level에 X-Lock이 걸림

0개의 댓글