Microsoft SQL Server
격리 수준 및 잠금
수색…
비고
이 링크를 찾았습니다. 참조 용으로 유용합니다. "격리 수준"
격리 수준 설정의 예
격리 수준 설정의 예 :
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM Products WHERE ProductId=1;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; --return to the default one
READ UNCOMMITTED
- 현재 트랜잭션의 쿼리가 아직 커밋되지 않은 다른 트랜잭션의 수정 된 데이터에 액세스 할 수 없음을 의미합니다. 더티 읽기는 없습니다. 하지만 다른 트랜잭션이 데이터를 수정할 수 있으므로 반복 할 수없는 읽기 및 가상 읽기가 가능합니다.REPEATABLE READ
- 현재 트랜잭션의 쿼리가 아직 커밋되지 않은 다른 트랜잭션의 수정 된 데이터에 액세스 할 수 없음을 의미합니다. 완료되지 않는 한 현재 트랜잭션이 읽는 데이터를 다른 트랜잭션이 수정할 수 없으므로 NONREPEATABLE 읽기를 제거합니다. 그러나 다른 트랜잭션이 NEW ROWS를 삽입하고 쿼리가 한 번 이상 실행되면 팬텀 행이 두 번째 읽기를 시작할 때 나타날 수 있습니다 (쿼리의 where 문과 일치하는 경우).SNAPSHOT
- 쿼리 시작 부분에있는 데이터 만 반환 할 수 있습니다. 데이터의 일관성을 보장합니다. 더티 읽기, 반복 불가능 읽기 및 가상 읽기를 방지합니다. 그것을 사용하려면 - DB 구성이 필요합니다 :
ALTER DATABASE DBTestName SET ALLOW_SNAPSHOT_ISOLATION ON;GO;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
-
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
-
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