>  기사  >  데이터 베이스  >  [MySQL] MVCC 다중 버전 동시성 제어로 구현된 트랜잭션

[MySQL] MVCC 다중 버전 동시성 제어로 구현된 트랜잭션

little bottle
little bottle앞으로
2019-04-16 11:33:133175검색

다중 버전 동시성 제어 다중 버전 동시성 제어인 MVCC는 일반적으로 데이터베이스 관리 시스템에서 프로그래밍 언어로 트랜잭션 메모리를 구현하기 위해 데이터베이스에 대한 동시 액세스를 달성하는 데 사용되는 동시성 제어 방법입니다.

1. 비차단 읽기 작업을 달성하기 위한 통합된 구현 표준이 없으며 쓰기 작업은 필요한 행만 잠급니다
2. 이는 특정 시점의 데이터 스냅샷을 저장하여 구현됩니다
3. 제어 및 비관적 동시성 제어
4.Innodb의 mvcc에는 각 트랜잭션마다 증가하는 버전 번호가 있습니다. 레코드의 각 행 뒤에 숨겨진 필드의 두 열을 추가하면 두 열은 생성 버전 번호와 삭제 버전 번호, 저장 작업 버전 번호가 됩니다.
5. 트랜잭션 추가, 삭제, 수정 및 체크인은 2열 버전 번호 필드에서 작동합니다

insert는 현재 트랜잭션 버전 번호를 행에 저장하여 새로 삽입된 각 행에 대한 버전 번호 필드를 생성합니다.
update는 저장할 새 행을 삽입합니다. 현재 트랜잭션 생성 버전 번호, 수정된 원본 행 데이터의 삭제된 버전 번호가 이 트랜잭션의 버전 번호입니다.
delete 수정된 행의 삭제된 버전 번호 필드가 이 트랜잭션의 버전 번호입니다.
select 현재 트랜잭션 버전보다 작거나 같은 생성된 버전 번호 필드를 쿼리합니다. 데이터 이 트랜잭션 이전에 레코드가 존재했는지, 이 트랜잭션에 새로 삽입되었는지 확인하세요.
버전 번호 필드가 존재하지 않거나 다음보다 큰 데이터를 쿼리하고 삭제합니다. 이 거래 전에 기록이 삭제되지 않았는지 확인하기 위해 현재 버전

6. 이러한 디자인은 잠금이 필요하지 않으며 읽기 및 작동 성능은 좋지만 추가 저장 공간이 필요합니다
7.mvcc는 두 가지 격리에서만 작동합니다. : REPEATABLE READ 및 READ UNCOMMITED는 항상 최신 데이터를 읽습니다. SERIALIZABLE 쌍은 모두 잠겼습니다

[권장 과정: mysql 비디오 튜토리얼]

위 내용은 [MySQL] MVCC 다중 버전 동시성 제어로 구현된 트랜잭션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제