>일반적인 문제 >팬텀리딩이란?

팬텀리딩이란?

Guanhui
Guanhui원래의
2020-06-11 11:35:509133검색

팬텀리딩이란?

팬텀리딩이란?

팬텀리딩은 트랜잭션 A가 조건부 인덱스를 기반으로 N개의 데이터를 먼저 얻은 후, 트랜잭션 B가 이 N개의 데이터 외에 M개의 데이터를 변경하거나 트랜잭션의 검색 조건에 맞는 M개의 데이터를 추가하는 것을 의미합니다. A, 트랜잭션 A가 이를 다시 검색하고 찾도록 합니다. N+M개의 데이터 조각이 있어 팬텀 읽기가 발생합니다.

환상독서는 어떻게 해결하나요?

  • 다음 키 잠금으로 해결되었습니다.

  • 팬텀 읽기를 하는 이유는 행 잠금은 행만 잠글 수 있기 때문인데 새 레코드를 삽입할 때 업데이트해야 할 것은 레코드 사이의 "간격"입니다. 따라서 팬텀 읽기를 해결하기 위해 InnoDB는 간격 잠금을 도입합니다.

  • Gap 잠금 Gap 잠금은 반복 읽기 수준에서만 유효합니다.

  • Gap 잠금과 행 잠금을 조합한 것을 다음 키 잠금이라고 하며 각 다음 키 잠금은 전면 열림 및 후면 닫힘입니다. 간격.

데이터베이스에 정의된 4가지 격리 수준 중

가장 높은 격리 수준인 SERIALIZABLE_READ를 사용하면 가상 읽기가 발생하지 않도록 할 수 있습니다.

반복 읽기(RR)

현재 읽기의 경우 RR 격리 수준에 따라 읽기 레코드가 잠기도록(레코드 잠금), 읽기 범위의 잠김이 보장됩니다. 쿼리 조건을 충족하는 새 레코드는 읽을 수 없습니다. 삽입(갭 잠금), 팬텀 판독 현상이 없습니다.


추천 튜토리얼: "MySQL 튜토리얼"

위 내용은 팬텀리딩이란?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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