개요
해당 글은 쉬운코드님의 https://www.youtube.com/watch?v=89TZbhmo8zk 영상을 시청하고 개인적으로 정리한 글입니다:)
Unrecoverable schedule
스케쥴 내에서 1)commit된 transaction 이 2)rollback 된 transaction이 write 했었던 데이터를 읽은 경우, rollback을 해도 이전 상태로 회복 불가능 할 수 있기 때문에 이런 schedule 은 DBMS 가 허용하면 안됨
durability: 이미 커밋된 트랜잭션은 rollback 할 수 없음
Recoverable schedule
스케쥴 내에서 그 어떤 트랜잭션도 자신이 읽은 데이터를 write 한 트랜잭션이 먼저 commit/rollback 하기 전까지는 commit 하지 않는 경우 (rollback 을 할때 이전 상태로 온전히 돌아갈 수 있음)
하나의 transaction 이 rollback 하면 의존성이 있는 다른 transaction 도 rollback 해야함 => cascade rollback
Cascade rollback
하나의 transaction 이 rollback 하면 의존성이 있는 다른 transaction 도 rollback 해야함 => 비용 발생
데이터를 write 한 transaction 이 commit/rollback 한 뒤에 데이터를 읽는 schedule 만 적용할 필요가 생김
Cascadeless Schedule (Avoid Cascade rollback)
스케쥴내에서 어떤 트랜잭션도 다른 트랜잭션에서 write 한 데이터를 그 트랜잭션이 종료(commit or rollback) 하기전까지 읽지 않는 경우
문제
schedule 내에서 어떤 transaction 도 commit 되지 않는 transaction 들이 write 한 데이터에 대해 write 연산할 경우 불일치 문제 발생
이유
위 상태에서는 1번 트랜잭션이 2번 트랜잭션에 의존하고 있기 때문에 2번 트랜잭션이 먼저 commit 될 수 있도록 해야함. 그래서 의존하는 트랜잭션이 종료 될때까지 1번 트랜잭션이 commit 하면 안됨
Strict Schedule
schedule 내에서 어떤 transaction 도 commit 되지 않는 transaction 들이 write 한 데이터는 쓰지도 읽지도 않는 경우
'데이터베이스' 카테고리의 다른 글
[데이터베이스] - DBCP(Database Connection Pool) (0) | 2024.01.10 |
---|---|
[데이터베이스] - 2PL 과 LOCK (0) | 2024.01.04 |
[데이터베이스] - 트랜잭션 동시성 제어 (1) (0) | 2024.01.04 |
[데이터베이스] - 최적화 방법 11가지 (1) | 2024.01.02 |
[Database] SQL vs NOSQL (1) | 2023.12.27 |