17

간단한 질문이 있으십니까?READ_COMMITTED_SNAPSHOT이 기본적으로 설정되어 있지 않은 이유는 무엇입니까?

READ_COMMITTED_SNAPSHOT은 기본적으로 사용하지 않는 이유는 무엇입니까?

역 호환성, 성능 또는 둘 모두를 추측하고 있습니까?

[편집] 나는 스냅 숏 격리 수준이 아닌 READ_COMMITTED 격리 수준과 관련된 효과에 관심이 있습니다.

잠금을 적게 유지하면서 커밋되지 않은 행을 읽지 않는 이유는 무엇입니까?

답변

15

둘 다. 대체로 호환성.

기본적으로 스냅 샷을 켜면 이전 차단 동작을 예상하는 대다수의 응용 프로그램이 손상됩니다. 스냅 샷을 만들면 이 무겁고 버전 저장소에 tempdb를 사용하면 성능에 미치는 영향을 상당히 정확하게 측정 할 수 있습니다.

+5

많은 잠금을 많이 사용해도 성능에 영향을주지 않습니까? –

+2

"차단 동작에 의존하는"응용 프로그램이 어떻게 손상 될 수 있는지 자세히 설명해 주시겠습니까? 나는 많은 연구를했으며 아무도이 결론에 도달 할 수있는 방법을 짐작할 수 없다. –

4

Sybase/SQL Server 제품군이 영원히 작동하는 방식에서 기본 잠금 전략을 변경합니다. 모든 응용 프로그램을 손상시킬 수 있고, 내 상점에서 알고있는 모든 응용 프로그램이 손상되어 많은 중요한 데이터가 손상 될 수 있습니다.

Wikipedia article을 읽으십시오 : 은행 업무용 코드의 뒤에이 격리 모델을 사용 하시겠습니까? 일반적으로

따라서, 스냅 샷 격리는 잠재적 인 함정 중 하나 또는 가능한 솔루션을 감사하지 않을 수 있습니다 사용자에 유지 사소하지 않은 제약 의 문제의 일부를 둔다. 이 전송의 장점은 더 나은 성능입니다.

대부분의 데이터베이스 디자인과 마찬가지로 절충안입니다. 필자의 경우, 잠금 대기/교착 상태 (희귀)를 데이터 무결성을보다 쉽고 더 많이 유지할 수있는 가격으로 처리 할 수 ​​있습니다. 나는 문제 해결을 위해 스냅 숏 격리를 보는 문제를 아직 보지 못했습니다.

+2

READ_COMMITTED_SNAPSHOT으로 인해 데이터가 손상 될 수있는 방법을 자세히 설명해 주시겠습니까? –

18

기본적으로에 스냅 샷을 켜기 애플리케이션

이 응용 프로그램의 "대부분"를 중단한다면 그것은 나에게 명확하지 않다의 대부분을 깰 것이다. 또는 식별하기 어렵거나 해결하기 어려운 방식으로 많은 응용 프로그램을 손상시킬 수 있습니다. SQL Server 설명서에 READ COMMITTEDREAD COMMITTED SNAPSHOT은 모두 ANSI 정의 READ COMMITTED을 충족한다고 나와 있습니다. (Stated here : http://msdn.microsoft.com/en-us/library/ms189122.aspx) 코드에서 문자 그대로 ANSI가 요구하는 동작 이외의 것에 의존하지 않는 한, 이론 상으로는 괜찮을 것입니다.

ANSI 사양은 사람들이 일반적으로 더티 읽기, 퍼지/반복 불가능 읽기 등과 같은 것이 일반적으로 생각하는 모든 것을 캡처하지 않는다는 점에서 복잡합니다. 그리고 READ COMMITTED SNAPSHOT에서 발생할 수있는 (ANSI 정의에 의해 허용 된) 예외가 READ COMMITTED에서 발생할 수 없습니다. 예를 들어 http://www.jimmcleod.net/blog/index.php/2009/08/27/the-potential-dangers-of-the-read-committed-snapshot-isolation-level/을 참조하십시오.

http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/d1b3d46e-2642-4bc7-a68a-0e4b8da1ca1b도 참조하십시오.

격리 수준 간의 차이점에 대한 자세한 내용은 http://www.cs.umb.edu/cs734/CritiqueANSI_Iso.pdf (READ_COMMITTED_SNAPSHOT은이 문서를 작성했지만 다른 수준은이 문서에서 다루지 않았습니다.)으로 시작하십시오.

+0

실제로 (변경되었을 가능성이 있음) 대답은 다음과 같습니다. _ 기본적으로 스냅 샷을 켜면 오래된 차단 행동 ** _을 기대하는 대다수의 응용 프로그램이 중단됩니다. 필자가 알고있는 사실은이 비관적 인 잠금 전략에 의존하는 기존 응용 프로그램이 있으며 잠금 획득을 기다리는 동안 일시 중지 될 것으로 예상된다는 것입니다. –