레코드 레벨의 트랜잭션을 지원하는 DBMS 가 제공하는 기능
목적 : 잠금을 사용하지 않는 일관된 읽기를 제공
언두 로그(Undo log) 를 이용해 구현한다.
Multi Version 의미 : 하나의 레코드에 대해 여러 개의 버전이 동시에 관리된다는 의미
MVCC 과정 살펴보기
최초 INSERT
INSERT INTO member(id, name, area)
VALUEs(1, 'LEE', '서울');
COMMIT;
해당 레코드 UPDATE
UPDATE member
SET area = '경기'
WHERE id = 1;
위에서 수행한 UPDATE 를 커밋하기 전 SELECT 하면?
COMMIT 한다.
- 현재까지 상태를 영구적인 데이터로 만든다.
- 롤백 하면 언두 영역의 데이터 → 버퍼 풀로 복구 / 언두 영역 내용 삭제 ( 언두 영역을 필요로하는 트랜잭션이 더는 없을 때)
InnoDB 스토리지 엔진은 MVCC 기술을 이용해 잠금을 걸지 않고 읽기 작업을 수행한다.
순수한 읽기 작업은 다른 트랜잭션의 변경 작업과 관계없이 항상 잠금을 대기하지 않고 바로 실행된다.
→ 변경 전 데이터인 언두 로그를 사용한다.
innodb_table_locks
시스템 변수 활성화하자성능 향상을 위한 버퍼 풀의 용도
플러시 리스트 플러시
주기적으로 플러시 리스트 플러시 함수를 호출해서 츨러시 리스트에서 오래전에 변경된 데이터 페이지 순서대로 디스크에 동기화하는 작업 수행
LRU 리스트 플러시
사용 빈도가 낮은 데이터 페이지들을 제거해서 새로운 페이지들을 읽어올 공간을 만든다.