MVCC(Multi-Version Concurrency Control, 다중 버전 동시성 제어)

DB가 동시성을 제어하기 위해 사용하는 방법 중 하나이다.

Multi-Version이란

스냅샷을 통해 **하나의 레코드에 대해 여러 버전이 관리**된다는 것이다.

이를 통해 Commit되기 전의 변경 사항은 다른 사용자가 볼 수 없도록 하는 등의 제어가 가능하다.


MVCC를 쓰는 이유

**Lock을 사용하지 않기 위해서**이다.

동시성 제어를 위한 방법이 Lock이지만 Lock을 쓰게 되면 동시 요청시에 처리 속도가 상당히 떨어진다.

그래서 MySQL은 MVCC를 사용하고 스냅샷으로 Undo Log를 활용한다.