2013-10-06 1 views

답변

1

, 기본 격리 수준 (커밋 된 읽기)

 
T1, first select -> Does not see any changes 
T1, second select -> Does not see any changes by T2 
T1, third select -> Does not see any changes by T3, but sees changes by T2 (phantom read) 
T1, forth select -> Sees all the changes (phantom read) 

그래서 최선을 다하고 기본적으로 아무것도 T1에 볼 수 있습니다.

+0

팬텀 읽기로 4 번을 선택 하시겠습니까? –

+0

@JeffreyKemp 맞습니다! 결정된. – erdogany

0

Oracle은 트랜잭션이 데이터베이스에서 커밋 된 데이터 만 읽을 수 있다는 READ COMMITTED를 명시 적으로 지원합니다. 더티 읽기 (커밋되지 않은 데이터 읽기)가 없습니다.

위의 시나리오에서 T1은 SELECT 데이터 만, T2는 데이터 (업데이트, 삭제) 및 T3 삽입 데이터를 조작합니다. 트랜잭션의 COMMIT 타이밍에 따라 교착 상태가 발생하지 않고 T1에서 볼 수 있습니다.

세 번째 SELECT : T3에서 변경된 내용 만 표시됩니다 (T3에서는 표시되지 않음). 네 번째 SELECT : T2 및 T3에서 변경. 변경 내용을 다른 쿼리에서 사용할 수 없습니다 (첫 번째 및 두 번째).

트랜잭션에서 COMMIT하기 전에 Oracle 기본 분리 레벨 설정으로 인해 다른 트랜잭션에서 데이터를 볼 수 없습니다.

+0

나는 이것이 내가 작성한 것과 동일하다고 생각한다. – erdogany

관련 문제