>일반적인 문제 >가상 독서는 반복 불가능한 독서를 의미합니까?

가상 독서는 반복 불가능한 독서를 의미합니까?

藏色散人
藏色散人원래의
2020-05-21 11:29:032993검색

가상 독서는 반복 불가능한 독서를 의미합니까?

가상 독서는 반복이 불가능한 독서인가요?

가상 독서와 비반복 독서는 다릅니다.

Dirty reads Dirty reads: 이 이벤트는 트랜잭션이 아직 커밋되지 않은 데이터를 읽을 때 발생합니다. 예: 트랜잭션 1이 데이터 행을 수정한 다음 트랜잭션 2가 수정 작업을 커밋하기 전에 수정된 행을 읽습니다. 트랜잭션 1이 수정 작업을 롤백하는 경우 트랜잭션 2에서 읽은 데이터는 존재하지 않는 것으로 간주될 수 있습니다.

반복 불가능한 읽기: 이 이벤트는 트랜잭션이 동일한 데이터 행을 두 번 읽었지만 매번 얻은 데이터가 다를 때 발생합니다. 예: 트랜잭션 1이 데이터 행을 읽은 다음 트랜잭션 2가 행을 수정하거나 삭제하고 수정 작업을 제출합니다. 트랜잭션 1이 행을 다시 읽으려고 하면 다른 데이터 값을 얻거나(행이 업데이트된 경우) 해당 행이 더 이상 존재하지 않는다는 사실을 발견합니다(행이 삭제된 경우).

팬텀 읽기: 후속 읽기 작업에서 검색 조건에 맞는 데이터 행이 나타나지만 해당 데이터 행이 원본 데이터에 속하지 않는 경우에 발생하는 이벤트입니다. 예: 트랜잭션 1은 특정 검색 조건을 충족하는 일부 행을 읽은 다음 트랜잭션 2는 트랜잭션 1의 검색 조건과 일치하는 새 행을 삽입합니다. 트랜잭션 1이 원래 행을 생성한 쿼리를 다시 실행하면 다른 행을 얻게 됩니다.

거래 시나리오는 다음과 같습니다.

동일한 은행 계좌 A에 200위안이 있고, A는 100위안을 인출하고, B는 100위안을 B계좌로 이체합니다. 거래가 격리되지 않으면 다음과 같은 문제가 발생할 수 있습니다.

1. 첫 번째 유형의 분실 업데이트: 먼저 A가 돈을 인출할 때 계좌에 200위안이 있고 동시에 B가 200위안을 이체합니다. A와 B가 동시에 작동하여 A가 100위안을 성공적으로 인출하고 B의 작업이 실패하여 롤백되며 이러한 방식으로 A의 작업이 덮어쓰여집니다. 은행은 100위안을 잃었다.

2. A가 100위안을 인출했지만 제출하지 않았습니다. B가 이체를 했는데 계좌에 100위안이 남아 있는 것을 발견했습니다. 이는 A가 작업을 포기하고 B가 정상적인 작업을 제출한 것입니다. 계좌의 최종 금액은 0위안이고, B는 A의 더러운 데이터를 읽었고, 고객은 100위안을 잃었습니다.

3. 가상 읽기: 더티 읽기와 유사하게 삽입 작업 중 읽기 문제를 목표로 합니다. 예를 들어 C의 예금 100위안은 이 때 통계 조회를 위해 보고서를 작성합니다. 계좌는 200위안인데 C가 제출했는데, 이때 은행에서 다시 계산해보니 계좌 잔액이 300위안으로 어떤 것을 기준으로 삼아야 할지 판단이 안 됐다.

모든 사람들은 통계가 수시로 업데이트되어야 한다고 생각하는 것 같습니다. 이는 정상이지만 통계가 트랜잭션에 포함된 경우 이는 정상이 아닙니다. 예를 들어 통계 애플리케이션 중 하나가 통계 결과를 컴퓨터로 출력해야 합니다. 원격 네트워크에 있는 컴퓨터의 디스크 파일에서는 성능 및 사용자 응답성을 향상시키기 위해 두 개의 스레드로 나누어서 처리하고 있는데, 이때 먼저 완료된 통계 데이터와 나중에 완료된 데이터가 일치하지 않을 수 있으므로, 어느 쪽이 승리해야 할지 모르겠습니다.

4. 비반복 판독: A와 B가 동시에 계좌가 200위안인 것을 발견했습니다. A는 100위안을 인출하기 시작했고 이때 B는 최종 업데이트를 준비하면서 또 다른 쿼리를 작성하여 발견했습니다. 결과는 100위안이었다고 이 시B는 계좌를 100으로 바꿀지 0으로 바꿀지 몰라 혼란스러워할 것이다.

와 더티 읽기의 차이점은 더티 읽기는 이전 트랜잭션의 커밋되지 않은 더티 데이터를 읽는 반면, 반복 불가능 읽기는 이전 트랜잭션에서 제출한 데이터를 다시 읽는다는 것입니다.

5. 두 번째 유형의 업데이트는 반복 불가능한 특수한 경우입니다. 위와 같이 B는 두 번째 쿼리를 수행하지 않고 직접 작업을 완료합니다. 100위안의 은행 손실이 덮어씌워졌습니다. 첫 번째 유형의 업데이트 손실과 비슷한 느낌입니다.

위 내용은 가상 독서는 반복 불가능한 독서를 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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