>  기사  >  데이터 베이스  >  mysql에서 반복 불가능한 읽기를 해결하는 방법

mysql에서 반복 불가능한 읽기를 해결하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-09-02 13:50:198926검색

Mysql의 반복되지 않는 읽기 문제 해결 방법: mvcc 다중 버전 동시성 제어가 사용됩니다. mvcc는 각 데이터 조각 뒤에 두 개의 숨겨진 열, 즉 생성 버전 번호와 삭제 버전 번호를 사용합니다. 버전 번호.

mysql에서 반복 불가능한 읽기를 해결하는 방법

【관련 학습 권장 사항: mysql 학습

반복 불가능한 읽기를 해결하는 mysql 방법:

mysql에서 기본 트랜잭션 격리 수준은 반복 가능-읽기(반복 가능- read) ), 반복 불가능한 읽기를 해결하기 위해 innodb는 mvcc(다중 버전 동시성 제어)를 사용하여 이 문제를 해결합니다.

mvcc는 두 개의 숨겨진 열(버전 번호 생성 및 버전 번호 삭제)을 사용하여 각 데이터 뒤에 추가됩니다. 각 트랜잭션은 처음에 버전 번호가 증가합니다

새로 추가됨:

insert into user (id,name,age)values(1,"张三",10);

mysql에서 반복 불가능한 읽기를 해결하는 방법

Update :

update user set age = 11 where id = 1;

업데이트 작업은 삭제+추가로 구현됩니다. 먼저 현재 데이터를 삭제된 것으로 표시합니다.

mysql에서 반복 불가능한 읽기를 해결하는 방법

그런 다음 새 데이터를 추가합니다.

mysql에서 반복 불가능한 읽기를 해결하는 방법

삭제: 삭제 작업은 다음과 같습니다. 데이터의 삭제된 버전 번호를 현재 트랜잭션의 버전 번호로 직접 업데이트합니다

delete from user where id = 1;

mysql에서 반복 불가능한 읽기를 해결하는 방법

Query 작업:

select * from user where id = 1;

Query 작업 오래된 데이터나 다른 트랜잭션에 의해 변경된 데이터를 쿼리하는 것을 방지하기 위해 다음 조건이 충족되어야 합니다.

1. 쿼리 시 현재 트랜잭션의 버전 번호는 생성 버전 번호보다 크거나 같아야 합니다.

2 쿼리 시 현재 트랜잭션의 버전 번호는 다음과 같아야 합니다. 삭제된 버전 번호보다 작습니다

즉: create_version

이렇게 하면 다른 트랜잭션에 의해 수정된 데이터를 쿼리하는 것을 피할 수 있습니다

위 내용은 mysql에서 반복 불가능한 읽기를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.