CS/Database

[데이터베이스] 10. Concurrency Control Techniques (Ch. 21)

공영재 2023. 12. 9. 21:17

Reference - Fundamentals of Database Systems 7th edition

 

 

 

Concurrency Control Techniques

- two-phase locking

concurrency control technique으로 two-phase locking technique이 있다. operation으로는 read_lock, write_lock, unlock이 있다. 이때 deadlock과 starvation 문제가 발생한다. deadlock은 system 차원에서 detection을 하거나, time stamp를 이용해 시간 delay를 주거나, no waiting algorithm(한 process를 바로 killed)등을 이용하여 해결한다. 이때 detection을 하면 victim selection이 필요하며, timeout으로 일정기간이 지나면 트랜잭션을 바로 abort한다. 이러한 locking에 따라 starvation이 발생할 수 있고, FCFS 등의 policy로 해결한다.

 

- timestamp-based ordering

timestamp를 통해 concurrency control을 할 수 있다. time stamp는 transaction의 유일한 식별자이자 시작 시간으로, lock을 쓰지 않으므로 deadlock에 빠지지 않는다. counter를 통해 generate한다.

이를 통해 interleaving으로 transaction이 수행되며 conflict이 발생하면 timestamp 순서에 따라 복구하는걸 

Timestamp Ordering(TO)라 한다.

Basic TO는 순서대로 실행되며 conflict 발생 시 later operation이 reject된다. serializable을 보장하며, starvation이 발생할 수 있다.

Strict TO는 기존 수행된 transaction이 끝날때(commit or abort)까지 기다린다.

Thomas's write rule : reject 발생 시 최근 write를 반영하고 과거 write는 버린다. serializability를 강제할 수 없다.

 

- multiversion protocols

data item을 여러 버전으로 유지. 똑같이 timestamp 혹은 two-phase locking을 사용할 수 있음.

단점은 저장공간 많이 낭비. 버전에 따라 timestamp가 달라짐. certify lock을 추가로 사용함.

certify는 갱신 시 사용함.

 

- Snapshot isolation

optimistic technique으로, 검증 시간지연을 미루고 나중에 한번에 검증 작업을 한다.

즉 transaction이 끝나고 나서 conflict 여부 확인.

 

- Data item granularity

데이터 아이템 크기에 따라 level을 나누고 locking. 이를 intention lock이라 한다.

Intention shared, intention exclusive 등을 통해 권한을 나눈다.