삭제-삽입 작업 후 MySQL 검색의 불일치 해결
MySQL 내에서 삭제 및 삽입 작업 후 오래된 데이터가 발생하는 것은 일반적인 문제입니다. 멀티스레드 애플리케이션. 이 동작을 이해하기 위해 기본 원칙을 자세히 살펴보겠습니다.
MySQL 격리 수준: 범인
기본적으로 MySQL은 "REPEATABLE READ" 격리 수준으로 작동합니다. 이 설정을 사용하면 변경 사항이 트랜잭션 내에서 또는 트랜잭션 이외에서 이루어졌는지 여부에 관계없이 데이터베이스에 대한 후속 변경으로 인해 트랜잭션이 영향을 받지 않습니다.
문제의 맥락에서 이전 세션을 삭제한 후 새 스레드를 생성하더라도 다른 스레드를 제공하는 열린 연결은 이러한 수정 이전에 트랜잭션이 시작되었기 때문에 여전히 오래된 세션을 볼 수 있습니다. 다른 연결이 해당 트랜잭션을 커밋하거나 롤백하더라도 "REPEATABLE READ" 격리 수준으로 인해 업데이트된 데이터를 관찰하지 못할 수 있습니다.
해결책: 격리 수준 수정 또는 트랜잭션 커밋
이 캐싱 문제를 해결하려면 두 가지 기본 방법이 있습니다. 옵션:
추가 캐싱 고려 사항
MySQL의 격리 수준과는 별도로, 캐싱 동작에 영향을 미칠 수 있는 요인:
MySQL 격리 수준을 처리하고 다른 캐싱 요소를 고려하면 데이터 검색의 불일치를 해결하고 데이터베이스 업데이트를 정확하게 처리할 수 있습니다. 지원서 내에서.
위 내용은 삭제-삽입 작업 후 내 MySQL 애플리케이션에 오래된 데이터가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!