Mysql의 반복되지 않는 읽기 문제 해결 방법: mvcc 다중 버전 동시성 제어가 사용됩니다. mvcc는 각 데이터 조각 뒤에 두 개의 숨겨진 열, 즉 생성 버전 번호와 삭제 버전 번호를 사용합니다. 버전 번호.
【관련 학습 권장 사항: mysql 학습】
반복 불가능한 읽기를 해결하는 mysql 방법:
mysql에서 기본 트랜잭션 격리 수준은 반복 가능-읽기(반복 가능- read) ), 반복 불가능한 읽기를 해결하기 위해 innodb는 mvcc(다중 버전 동시성 제어)를 사용하여 이 문제를 해결합니다.
mvcc는 두 개의 숨겨진 열(버전 번호 생성 및 버전 번호 삭제)을 사용하여 각 데이터 뒤에 추가됩니다. 각 트랜잭션은 처음에 버전 번호가 증가합니다
새로 추가됨:
insert into user (id,name,age)values(1,"张三",10);
Update :
update user set age = 11 where id = 1;
업데이트 작업은 삭제+추가로 구현됩니다. 먼저 현재 데이터를 삭제된 것으로 표시합니다.
그런 다음 새 데이터를 추가합니다.
삭제: 삭제 작업은 다음과 같습니다. 데이터의 삭제된 버전 번호를 현재 트랜잭션의 버전 번호로 직접 업데이트합니다
delete from user where id = 1;
Query 작업:
select * from user where id = 1;
Query 작업 오래된 데이터나 다른 트랜잭션에 의해 변경된 데이터를 쿼리하는 것을 방지하기 위해 다음 조건이 충족되어야 합니다.
1. 쿼리 시 현재 트랜잭션의 버전 번호는 생성 버전 번호보다 크거나 같아야 합니다.
2 쿼리 시 현재 트랜잭션의 버전 번호는 다음과 같아야 합니다. 삭제된 버전 번호보다 작습니다
즉: create_version
이렇게 하면 다른 트랜잭션에 의해 수정된 데이터를 쿼리하는 것을 피할 수 있습니다
위 내용은 mysql에서 반복 불가능한 읽기를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!