DATABASE

태태개발일지 - 공유락, 베타락

태태코 2024. 12. 12. 10:45
반응형

공유락 베타락

공유 락베타 락비관적 락데이터 일관성과 무결성을 위해 사용하는 락 유형이다.

 

DB LOCK에 대한 간단한 정보는

https://taetaecoding.tistory.com/155

 

태태개발일지 - DB Lock

DB LOCK간단한 개념 정리를 위해서 간략하게 정리해본다. 문제상황 DB락을 사용할 때에는 동시에 접근할 가능성을 기준으로 낙관적락 을 쓸지, 비관적 락을 쓸지 결정하게된다. 낙관적락을 사용

taetaecoding.tistory.com

아래 글을 확인하면 된다.

오늘은 단순히 비관적 락에 있는 공유 락과 베타 락에 대해서 정리해볼 것이다.

 

 

공유락

공유락 = (읽기 락) 이라고 부른다.

 

공유락이 걸린 데이터는 읽기 즉(SELECT) 연산만 가능하고, 쓰기(UPDATE,DELETE) 는 불가능하다.

 

1. 공유락에 걸린 데이터에 대해서 다른 트랜잭션에서도 공유락을 획득하여 읽기 연산이 가능하다.

2. 하지만 데이터를 변경할 수 있는 베타락에 대해선 획득할 수 없다.

 

 

즉:

공유 락을 사용하면 트랜잭션 내에서 조회 가능한 데이터가 변경되지 않는 다는 것을 보장한다.

 

베타락

 

베타 락 =  (쓰기 락) 이라고 부른다. 

 

 

1. 배타 락을 획득한 트랜잭션은 읽기 , 쓰기 연산모두 가능하다.

2. 이때 다른 트랜잭션은 읽기 쓰기 모두 불가능한다.

 

 

 

 

데드락

데드락: 

1번이 A에 배타 락을 건 상태에서 B자원에 공유락을 요청한 상황이고,

2번이 B에 배티 락을 건 상태에서 A자원에 공유락을 요청한 상황이면 이 상황을 '무한굴레' 라고 표현하고 데드락이라고 말한다.

그 어떤 자원이 베타락을 포기하지 않는 이상 이 데드락은 풀리지 않는다.

 

 

 

데드락 해결 방법

 

1. 트랜잭션에서 락 획득 순서를 일관되게 한다.

ex) 모든 번호는 1번으로 A를 먼저 선점해야하고, 2번으로는 B를 먼저 선점해야한다는 것.

 

 

2. 락에 대한 타임아웃 시간을 설정하여 관리한다.

 

 

 

반응형