공부기록
동시성 제어 본문
locking 프로토콜은 가능한 스케줄을 제한한다.
exclusive-lock은 쓰기/읽기, shared-lock은 읽기이다.
write lock을 할경우 나만 접근하고 다른 트랜잭션은 접근할 수 없다.
read lock을 할 경우 다른 read lock은 접근 가능하다.
즉 호환 가능한 lock을 얻을 경우에만 공유 데이터에 접근 가능하다.
락을 얻지 못하면 다른 트랜잭션이 unlock 할 때 까지 기다려야 한다.
근데 스케줄이 serializable하려면 그냥 lock unlock만 하면 안된다.
2-phase locking, tree-based locking이 있다.
2-phase locking growing-phase와 shrinking-phase로 구분된다.
growing-phase에서는 락이 점점 강화된다.
shrinking-phase에서는 락이 점점 약화된다. 이렇게 하면 serializable하다.
구현은 hash-table로 한다.
2-phase locking은 데드락이 발생할 수 있다.
tree-based locking의 경우 데이터간의 부분적인 순서가 존재한다. di와 dj에 접근할려면 di를 접근해야하고 dj를 접근해야하는 것이 그 예시이다.
write-lock만이 존재하며 하나의 노드를 골라 그 아래의 자식의 노드로 bfs로 내려가면서 lock을 가지게 된다.
이 경우 병행성이 강화되지만 필요없는 lock을 집게 되므로 오히려 병행성이 약화 될 수 있다.
이것은 인덱싱 할때 사용하는 방법이다.
'CS > DB' 카테고리의 다른 글
트랜잭션 이론 (0) | 2021.06.03 |
---|---|
트랜잭션 동시성 오류와 고립수준 (0) | 2021.05.31 |
트랜잭션 이론 (0) | 2021.05.26 |
ORM (0) | 2021.05.17 |
SQL DB VS NOSQL DB (0) | 2021.05.15 |