Загружаем каталог…
Загружаем каталог…
MVCC란? MVCC는 Multi-Version Concurrency Control의 줄임말 즉, 다중 버전 동시성 제어 이다. -> 여러 버전의 데이터를 이용한 동시성 제어 핵심 아이디어 데이터가 변경되더라도 이전 버전의 데이터를 조회할 수 있도록 관리한다. 트랜잭션은 자신의 Snapshot(Read View)을 기준으로 해당 트랜잭션이 어떤 버전의 데이터를 볼 수 있는지 판단한다. 예시를 들어보자. 트랜잭션 1이 데이터 A에 대해 쓰기 작업을 진행 중 트랜잭션 2가 A에 대해 읽기를 시도 이때, 트랜잭션 2에게 A의 과거 버전을 제공 따라서 읽기와 쓰기를 동시에 가능하다. 왜 MVCC가 필요한가? 만약 Lock만을 사용해서 동시성을 제어한다고 해보자. 트랜잭션 1이 데이터를 수정하고 트랜잭션 2가 데이터 조회를 시도한다고 하면 트랜잭션 2는 트랜잭션 1이 끝날 때까지 대기해야 한다. 읽기 요청이 많다면 대기가 지속되면서 동시성이 크게 떨어지게 된다. 따라서 "읽기 작업이 쓰기 작업을 막지 않고, 쓰기 작업도 읽기 작업을 최대한 막지 않도록 한다." READ COMMITTED 와 REPEATABLE READ 비교 ※ MySQL 기준 READ COMMITTED를 생각해보자. READ COMMITTED 에서는 NON-REPEATABLE READ 문제가 발생한다고 했다. 이는 READ COMMITTED 단계에서 조회할 때마다 새로운 스냅샷을 사용하기 때문이다. 예를 들어, T1이 A를 조회했을 때 100이라고 하자. T2가 A를 200이라고 수정 후 COMMIT T1이 A를 다시 조회할 때 보는 스냅샷은 T2가 A를 200으로 수정한 버전이다. 따라서 T1은 A의 값을 200이라고 읽는다. 이번에는 REPEATABLE READ를 생각해보자. REPEATABLE READ에서는 항상 동일한 값을 읽는다고 했다. 이는 REPEATABLE READ 단계에서 트랜잭션 동안 항상 동일한 스냅샷을 유지하는 방식이기 때문이다. 위의 예시와 같은 예를 들어보면, T1이 A를 조회했을 때 100이라고 하자. T2가 A를 200이라고 수정 후 COMMIT T1이 A를 다시 조회했을 때에는 T2가 200으로 수정하기 이전 버전을 본다. 따라서 T1은 A의 값을 100이라고 읽는다. 어떻게 이전 버전을 복원할까? 데이터가 변경될 때 이전 버전을 복원할 수 있도록 Undo Log에 관련 정보를 기록 해당 log는 트랜잭션 Rollback 뿐만 아니라 MVCC에서 과거 버전의 데이터를 조회하는 데도 사용 ※ Snapshot은 과거 데이터를 직접 저장한 것이 X, 어떤 버전의 데이터를 볼 수 있는지 판단하는 기준 Lock과 MVCC 차이 Lock는 다른 트랜잭션의 접근을 제한한다. MVCC는 접근을 막기보다 적절한 버전을 보여준다. 따라서 Lock과 MVCC는경쟁 관계가 아니라 함께 사용된다. 예를 들어, 일반적인 SELECT는 MVCC로 처리하고 수정을 위해서 데이터를 확실히 잡아야한다면 Lock을 사용한다. -> 즉, MVCC는 읽기 동시성을 높이는데 매우 유용, Lock은 충돌하는 작업의 접근을 제어하는 데 사용된다. 정리 MVCC는 Multi-Version Concurrency Control, 즉 다중 버전 동시성 제어이다. MVCC는 데이터가 변경되더라도 이전 버전의 데이터를 조회할 수 있도록 한다. MVCC는 읽기 동시성을 높이기 위해 사용한다. MVCC의 Read View 생성 및 사용 방식에 따라 격리 수준에 따른 조회 결과가 달라질 수 있다. Read View를 기준으로 어떤 데이터 버전을 바라볼지 판단하며, 필요한 과거 데이터는 Undo Log를 이용해 조회한다. 일반 SELECT는 주로 MVCC를 이용한 Snapshot Read로 처리된다. SELECT ... FOR UPDATE, DELETE 등은 Current Read를 수행하고 필요한 경우 Lock을 사용한다. MVCC와 Lock은 대체 관계가 아니라 서로 다른 문제를 해결하기 위해 함께 사용된다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
데이터베이스 MVCC. MVCC란? MVCC는 Multi-Version Concurrency Control의 줄임말 즉, 다중 버전 동시성 제어 이다. -> 여러 버전의 데이터를 이용한 동시성 제어 핵심 아이디어 데이터가 변경되더라도 이전 버전의 데이터를 조회할 수 있도록 관리한다. 트랜잭션은 자신의 Snapshot(Read View)을 기준으로 해당 트랜잭션이 어떤 버전의 데이터를 볼 수 있는지 판단한다. 예시를 들어보자. 트랜잭션 1이 데이터 A에 대해 쓰기 작업을 진행 중 트랜잭션 2가 A에 대해 읽기를 시도 이때, 트랜잭션 2에게 A의 과거 버전을 제공 따라서 읽기와 쓰기를 동시에 가능하다. 왜 MVCC가 필요한가? 만약 Lock만을 사용해서 동시성을 제어한다고 해보자. 트랜잭션 1이 데이터를…