수색…


비고

이 링크를 찾았습니다. 참조 용으로 유용합니다. "격리 수준"

격리 수준 설정의 예

격리 수준 설정의 예 :

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM Products WHERE ProductId=1;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; --return to the default one
  1. READ UNCOMMITTED - 현재 트랜잭션의 쿼리가 아직 커밋되지 않은 다른 트랜잭션의 수정 된 데이터에 액세스 할 수 없음을 의미합니다. 더티 읽기는 없습니다. 하지만 다른 트랜잭션이 데이터를 수정할 수 있으므로 반복 할 수없는 읽기 및 가상 읽기가 가능합니다.

  2. REPEATABLE READ - 현재 트랜잭션의 쿼리가 아직 커밋되지 않은 다른 트랜잭션의 수정 된 데이터에 액세스 할 수 없음을 의미합니다. 완료되지 않는 한 현재 트랜잭션이 읽는 데이터를 다른 트랜잭션이 수정할 수 없으므로 NONREPEATABLE 읽기를 제거합니다. 그러나 다른 트랜잭션이 NEW ROWS를 삽입하고 쿼리가 한 번 이상 실행되면 팬텀 행이 두 번째 읽기를 시작할 때 나타날 수 있습니다 (쿼리의 where 문과 일치하는 경우).

  3. SNAPSHOT - 쿼리 시작 부분에있는 데이터 만 반환 할 수 있습니다. 데이터의 일관성을 보장합니다. 더티 읽기, 반복 불가능 읽기 및 가상 읽기를 방지합니다. 그것을 사용하려면 - DB 구성이 필요합니다 :

ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
  1. READ COMMITTED - SQL 서버의 기본 분리. 커밋 될 때까지 다른 트랜잭션이 변경 한 데이터를 읽지 못하게합니다. 더티 읽기를 방지하는 테이블에서 공유 잠금 및 행 버전 관리를 사용합니다. DB 구성에 따라 다릅니다. READ_COMMITTED_SNAPSHOT - 활성화 된 경우 행 버전 관리가 사용됩니다. 사용하려면 다음을 사용하세요.
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; --return to the default one
  1. SERIALIZABLE - 트랜잭션이 끝날 때까지 획득하고 보유한 물리적 잠금을 사용하여 더티 읽기, 유령 읽기, 반복 불가능 읽기를 방지합니다. 그러나 동시 트랜잭션이 직렬화되고 하나씩 실행되므로 DataBase의 성능에 영향을줍니다.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow