[DB] concurrency control 기초 recoverability

mary·2024년 2월 27일

DB

목록 보기
8/15

unrecoverable schedule

: schedule 내에서 commit된 transaction이 rollback된 transaction이 write했었던 데이터를 읽은 경우
rollback을 해도 durability속성 때문에 이전 상태로 회복 불가능 할 수 있어서 이런 schedule은 DBMS가 허용하면 안 됨.

따라서 허용되는 schedule은 recoverble schedule인데, 어떤 것이냐면
commit의 순서를 올바르게 해야함!
의존되는 트랜잭션이 commit될 때까지 의존하는 트랜잭션은 commit하지 않고 기다려야함.

recoverrable schedule

: schedule내에서 그 어떤 transaction도 자신이 읽은 데이터를 write한 transaction이 먼저 commit/rollback하기 전까지는 commit하지 않는 경우
따라서 rollback할 때 이전 상태로 온전히 돌아갈 수 있기 때문에 DBMS는 이런 schedule만 허용해야한다.

cascadeless schedule

schecdule내에서 어떠한 transaction이 commit 되지 않은 transaction들이 write한 데이터는 읽지 않는 경우.

read가 없기 때문에 cascadeless schedule인데, 트랜잭션1이 롤백을 하게 됐을 때 트랜잭션2번이 commit이 됐음에도 결과가 사라지는 상황이 발생하므로 더 보강한 스케줄이 필요함.
그것이 바로

strict schedule

: 가장 엄격한 스케줄.
schecdule내에서 어떠한 transaction이 commit 되지 않은 transaction들이 write한 데이터는 쓰지도 읽지도 않는 경우.
rollback할 때 recovery가 쉬워서 transaction 이전 상태로 돌려놓기만 하면 됨.


정리

concurrency control은 serializability와 recoverability를 제공하는데, 이와 관련한 transaction의 속성이 Isolation인 것이다.



출처 : https://www.youtube.com/watch?v=89TZbhmo8zk&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=16

profile
내 인생을 망치러 온 나의 구원, 개발

0개의 댓글