문제

아래 링크에서 SQL Server 2008의 스냅 샷 격리 수준을 연구하고 있습니다. 내 혼란은

http://msdn.microsoft.com/en-us/library/ms173763.aspx

  1. "현재 트랜잭션이 시작된 후 다른 트랜잭션에 의한 데이터 수정은 현재 트랜잭션에서 실행되는 명세서에 표시되지 않습니다." - 다른 트랜잭션에 의해 커밋 된 데이터는 현재 스냅 샷 격리 수준 트랜잭션에 보이지 않는 것 같습니다.

  2. "스냅 샷 격리 수준에서 실행되는 트랜잭션은 해당 트랜잭션의 변경 사항을 볼 수 있습니다." - 다른 트랜잭션에 의해 커밋 된 데이터는 현재 스냅 샷 격리 수준 트랜잭션에 보이는 것 같습니다.

1과 2가 상충되는 것 같습니다. 다른하실 말씀 있나요?

미리 감사드립니다, 조지

도움이 되었습니까?

해결책

2 번은 "내 자신의 변화를 볼 수 있고 다른 변화를 볼 수 없습니다"를 의미합니다.

그래서 거래를 시작하고 거래를 변경하면 볼 수 있습니다. 다른 세션/연결에 대한 다른 트랜잭션은 TXN이 내 변경 사항을 볼 수없는 후 시작되었습니다.

다른 팁

또한 스냅 샷과 Commited Snapshot의 차이점을 알아야합니다. 후자의 경우 다음과 같이 Bol의 견적을 수정해야합니다.

"현재 명세서가 시작된 후 다른 트랜잭션에 의한 데이터 수정 (거래가 없음)은 현재 트랜잭션에서 실행되는 명세서에 표시되지 않습니다."

큰 차이를 만드는 경우의 예 : 스냅 샷 격리가 도움이 될 때 그리고 아프면

당신은 큰 그림에서 생각해야합니다. read_committed 유효 / 유용합니다. 무엇을 사용할 것인지 read_uncommitted? 더러운 읽기가 필요한 사업은 무엇입니까? 시리얼을 읽으시겠습니까? 모든 비즈니스 요구 사항이 데이터 읽기에 대한 주문을 강요하는 이유. SQL Server Designer는 단순화에 대해 생각하지 않았습니다. Oracle은 하나만 지원하기로 선택했으며 작동합니다. 스냅 샷은 DB가이를 해결하는 방법이므로 알지 못해서는 안됩니다. 왼쪽 뇌를 사용하면 DB 자체가 아닌 비즈니스 로직을 지원하는 방법에 대해 노력해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top