Multi-Version Concurrency Control(MVCC)

이전에는 object의 값을 단순히 갱신하는 것으로만 적용했었는데 이제는 multiple version 즉, 새로운 값을 추가하는 방식으로 구현해보자.

→ overwrite가 아니라 copy-on-write(version을 다르게) ⇒ young tx면 latest version을 읽도록!

⭐ 핵심 아이디어

🎯 예시

image.png

image.png

image.png

🎯 또 다른 예시

image.png

image.png

image.png

T2의 R(A)는 어떤 version의 값을 읽어야할까? ⇒ version0이다.

image.png

왜? T2는 dirty data에 접근하면 안되기에 old version에 접근한다.