inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

DBMS LOCK

몽키바나나
0

Lock 이란?

데이터베이스는 기본적으로 어려 유저가 사용하는 시스템으로써, 동시에 접근하는 경우가 많다. 저장된 데이터는 일관성, 무결성을 유지해야 하며, 동시에 접근하는 상황에서는 특별한 조치가 필요하다.

예를 들어 콘서트 자리가 하나 남았는데 2명의 유저가 동시에 티켓팅을 할 경우 티켓팅 성공은 한 사람만 이뤄져야 한다. 이 특별한 조치를 DBMS에서 사용하는 방법이 바로 lock(잠금) 이다.

즉, lock은 순차적인 접근을 위한 조치라고 볼 수 있다.


Lock의 종류


공유 잠금(Shared lock)

즉, 공유 잠금이 설정된 경우 다른 세션이 동일한 데이터를 읽을 수 있지만 수정은 불가능


배타 잠금(Exclusive lock)


블로킹(Blocking)

최소화 방법


교착 상태(Deadlock)

여러 개의 트랜젝션들이 자신의 작업을 실행하지 못하고 상대의 작업이 끝나기를 무한정 기다리는 상태를 교착 상태라 한다.

해당 상태는 대표적인 lock의 부작용 사례라고 볼 수 있다.

 

image

위의 사진은 교착상태가 일어난 상황이다. 트렌젝션 A는 game_master 테이블의 2번 row를 변경한 후 game_detail의 2번 row를 변경하고자 한다. 반면 트렌젝션 B는 game_detail의 2번 row를 변경한 후 game_master의 2번 row를 변경하고자 한다.

이 상황에서 트렌젝션 A는 game_master의 2번 row에 lock을 걸었으며, 트렌젝션 B는 game_detail의 2번 row에 lock을 걸었다.

트렌젝션 A는 game_detail의 2번 row의 잠금이 풀릴 때 까지 대기해야 하며, 트렌젝션 B는 game_master의 2번 row의 잠금이 풀릴 때 까지 기다려야 한다.

이때 서로가 먼저 끝나지 않으면 무한정 대기 상태에 빠지게 되며, 이게 바로 교착 상태(Deadlock)이다.

 

해결 방법

 


출처

데이터베이스 교착 상태(Dead Lock) : 네이버 블로그 (naver.com)

[데이터베이스] 잠금이란? (tistory.com)

 



 


데이터베이스 lock transaction DBMS Deadlock

답변 0