설명 전
e.g.
A가 B에게 20 이체, B가 본인에게 30 이체
A_BALANCE = 100, B_BALANCE = 200
schedule4는 123과 다른 결과를 초래
LostUpdate
Serial Schedule
Non-Serial Schedule
성능(동시성)과 고립성 모두 챙길 순 없을까?
serial schedule과 동일한(equivalent) nonserial schedule을 실행하면 되겠다!(라는 아이디어) -> schedule이 동일하기위한 정의가 필요.
어떨 때 원치않은 결과가 나올까? -> conflict operation은 순서가 바뀌면 결과도 바뀐다.
Conflict equivalent? 스케쥴이 동일하다는 의미를 정의하는 여러가지 방식(view equivalent...)이 있다 中 1
Conflict equivalent (of two schedules)
Conflict serializable
Serial Schedule 과 Conflict equivalent 할 때 Conflict serializable 이다
반면에
-> 성능때문에 여러 transaction들을 겹쳐서 실행할 수 있으면 좋겠다 (nonserial schedule)
-> 그러나 이상한 결과가 나오는 것은 싫다.
-> conflict serializable한 NonSerial schedule 을 허용 하자
-> 수많은 transaction이 실행 될 때마다 해당 schedule 이 conflict serializable 인지 확인해야함
-> 비용이 많이 들어 이 방법이 쓰이지는 않음
-> 그렇다면 schedule이 conflict serializable 하도록 보장하는 프로토콜을 적용하자
Concurrency Control
어떠한 스케쥴도 serializable하게 만들 수 있도록 하는 것
Isolation(고립성) 과 밀접한 관련 (Isolation level)