SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 후에 커밋 된 읽기를 추가합니까?


9

저장 프로 시저 안에 다음이 있습니다. (sql server 2008)

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
 BEGIN TRANSACTION getStuff
 BEGIN TRY 
    /*  some selects, updates, etc, etc. */
    ....
    COMMIT TRANSACTION getStuff
 END TRY
 BEGIN CATCH 
   ...
 END CATCH

이것은 트랜잭션 기반이므로 나머지 데이터베이스 연결은 SERIALIZABLE의 영향을받지 않을 것이라고 생각했습니다.

커밋 후 커밋을 읽으려면 격리 수준을 암시 적으로 설정해야합니까? 이것이 내 응용 프로그램 서버와 데이터베이스 서버 간의 다른 연결에 부정적인 영향을 줍니까?

답변:


6

명령은 TRANSACTION ISOLATION LEVEL아닙니다 SERVER ISOLATION LEVEL. 트랜잭션 범위의 격리 수준 만 변경합니다.


5

아니오. 커미트 된 읽기를 위해 격리 레벨을 암시 적으로 다시 설정할 필요는 없습니다.

온라인 서적에서 .

스토어드 프로 시저 또는 트리거에서 SET TRANSACTION ISOLATION LEVEL을 발행하면 오브젝트가 제어를 리턴 할 때 오브젝트가 호출 될 때 적용되는 레벨로 격리 레벨이 재설정됩니다. 예를 들어, 일괄 처리에서 REPEATABLE READ를 설정 한 후 일괄 처리에서 격리 수준을 SERIALIZABLE로 설정하는 저장 프로 시저를 호출하면 저장 프로 시저가 제어를 일괄 처리로 되돌릴 때 격리 수준 설정이 REPEATABLE READ로 되돌아갑니다.


3

게시 한 명령은로 SP에서 트랜잭션을 실행합니다 TRANSACTION ISOLATION LEVEL SERIALIZABLE. 다른 연결은 기본적으로 기본 격리 수준으로 설정됩니다. 읽기 커밋 (다른 격리 수준을 명시 적으로 지정하지 않은 경우).

Paul White- SQL Server Isolation Levels : A 시리즈 의 우수한 시리즈가 있습니다.이 시리즈를 통해 서로 다른 격리 수준의 의미와 사용시의 깊이를 이해할 수 있습니다.


-3

이전 접근법의 단점을 대부분 피하는 상당히 새로운 알고리즘입니다. 낙관적 접근 방식을 사용하여 차단없이 트랜잭션을 진행할 수 있습니다. 트랜잭션이 커밋하려고 할 때 트랜잭션이 확인되고 실행이 직렬화 가능하지 않은 경우 중단됩니다. http://writeulearn.com/relational-database-transactions/ 에서 모든 접근 방식에 대한 자세한 내용


이것은 질문에 대한 답변이 아닌 것 같습니다 ....
RDFozz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.