본문 바로가기

dbms5

[Recovery] Failure of Nonvolatile Storage disk는 stable storage인 log db와 non-stable storage 인 db 로 구분된다. memory = buffer disk = log용(stable) db용(non-stable) db 백업용(stable) stable storage를 추가적으로 두고 db disk 복사본을 저장해둔다. 덤프를 위해 트랜잭션을 중지하고 버퍼를 로그용 디스크와 db용 디스크에 업데이트 한다. db용 디스크의 카피를 추가한 stable storage에 저장한다. 이 때 stable storage에 표시를 남겨둔다. 이 작업을 dump라고 한다. dump한 것을 가지고 복구하게 되면 failure에 대해서도 consistency를 유지할 수 있게 된다. 2020. 6. 4.
[Recovery] Fuzzy checkpointing checkpoint를 만들 때 실행 중인 모든 트랜잭션을 중지하고 디스크에 버퍼의 값을 저장하게 된다. 트랜잭션을 중지하지 않고 checkpoint를 만드는 방법이 Fuzzy checkpointing이다. fuzzy checkpointing 1. 잠깐 모든 트랜잭션을 중지한다. 2. 을 log db 에 저장한다. 3. 업데이트된 버퍼 블락에 대해서 리스트 M을 만든다. dirty block에 대해 리스트를 만든 것이다. 4. 1에서 중지된 트랜잭션을 다시 시작한다. 5. M에 대해서 디비 스토리지에 저장을 한다. 이 때, 버퍼의 블락이 업데이트 되면 안되도록 latch같은 것을 쓴다. WAL 규칙을 만족해야 한다. 6. checkpoint를 가리키는 last_checkpoint 를 방금 수행한 로그 레코.. 2020. 6. 4.
[Concurrency Control]Insert and Delete opertaion phantom phemnomenon 부산 지점에 있는 모든 계좌의 금액을 합쳐서 부산 지점의 잔고와 비교하는 트랜잭션이 있다고 하자. 이 때, 동시에 부산 지점에 계좌가 하나 추가 된다면 어떻게 될까? 2 phase locking을 해도 insert, delete는 non-serializable schedule을 만들게 될 수 있다. 이런 상황을 phantom phemnomenon이라 한다. 이것을 해결하는 방식으로 delete, insert는 X lock를 획득한 상태로 진행해보자. 2PL 방식이다. 처음에 주어진 상황을 설명하는 예시는 다음과 같다. insert가 있어서 2PL을 해도 잘못된 결과가 나온다. 락의 단위를 튜플로 하면 이런 상황이 발생하게 된다. 테이블 단위 락을 사용하면 이 상황을 막.. 2020. 6. 1.
[Concurrency Control]Graph-based protocol 2PL의 대안인 graph-based protocol을 알아보자. 모든 데이터 아이템에 대한 set D이 있다고 하면 접근하는 순서가 partial ordering 을 만족시키면 acyclic한 그래프가 된다. 트리의 인덱스의 경우에는 이런 특정한 상황이 만족된다. 즉, tree-based protocol이 한 예이다. tree-based protocol X락만 허용 Ti의 첫 번째 락은 어떤 아이템에 대한 것이든 상관없다. Ti가 데이터 Q에 락을 걸려면 Q의 부모에 락을 갖고 있어야 한다. 데이터는 언제든 언락 될수 있다. 같은 아이템에 대해서는 락을 걸고 풀었으면 락을 얻지 못한다. 참고적으로 이해하면 되겠다. graph-based protocol은 conflict serializability을 보.. 2020. 5. 31.