차이:
비반복 읽기: 동일한 조건에서 다시 읽을 때 읽은 데이터의 값이 변경됩니다.
팬텀 리딩: 동일한 조건에서 첫 번째와 두 번째로 읽어내는 레코드 수가 다릅니다.
상세 분석:
1. 반복 불가능 읽기
동일한 조건에서 다시 읽을 때 읽은 데이터의 값이 변경되었습니다.
예:
트랜잭션 1에서 A는 급여를 1000으로 읽었지만 트랜잭션 1의 작업은 현재 완료되지 않았으며 나중에 또 다른 동일한 읽기 작업이 있습니다.
con1 = getConnection(); select salary from employee where employeeName ="A";
거래 2에서 재무 담당자는 A씨의 급여를 2000으로 수정하고 거래를 제출했습니다.
con2 = getConnection(); update employee set salary = 2000 where employeeName = "A"; con2.commit();
트랜잭션 1에서 A가 자신의 급여를 다시 읽으면 급여는 2000이 됩니다.
select salary from employee where employeeName ="A";
한 트랜잭션에서 두 번의 읽기 결과가 일치하지 않아 반복할 수 없는 읽기가 발생합니다.
2. 환상 읽기
동일한 조건에서 첫 번째와 두 번째로 읽는 레코드 수가 다릅니다.
예:
현재 급여가 1,000인 직원이 5명이 있습니다.
트랜잭션 1, 급여가 1,000인 모든 직원을 읽고, 총 10개의 레코드를 읽습니다.
con1 = getConnection(); Select * from employee where salary =1000;
이때 또 다른 트랜잭션이 직원 테이블에 직원 레코드를 삽입했는데 급여도 1000이었습니다.
con2 = getConnection(); Insert into employee(employeeName,salary) values("B",1000); con2.commit();
트랜잭션 1에서는 다시 급여가 1000인 모든 직원을 읽어 총 6개의 레코드를 읽어서 급여도 1000이 되었습니다. 환상의 읽기 .
//con1 select * from employee where salary =1000;
추천 튜토리얼: mysql 튜토리얼
위 내용은 팬텀 읽기와 반복 불가능 읽기의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!