isolation level에 대한 질문 드립니다.. 0 3 505

by 김혜니 [2019.04.16 09:55:09]


초보적인 질문 드립니다..

oracle과 sqlserver는 둘다 ReadCommitted 방식을 default로 한다고 알고 있습니다.

헌데 두가지 dbms 다 동일한 ReadCommitted 모드임에도 불구하고

A트랜잭션에서 특정 객체를 변경 할 때,

B트랜잭션에서 select 여부가 다른 이유가 뭘까요..?

// oracle의 경우 조회 가능(커밋 이전 데이터 조회), sql-server의 경우 조회 대기

 

by 김혜니 [2019.04.16 10:10:12]

아... 질문 올리고나서야 '문장수준 읽기 일관성(Statement-Level Read Consistency'에 대한 내용을 봤네요.

http://wiki.gurubee.net/pages/viewpage.action?pageId=26745060

이 부분때문이 맞나요?

mssql에서 1> alter database henidb set read_committed_snapshot on; 와 같이 모드설정하니 오라클과 동일하게 작동하네요.

즉 oracle의 default isolation level은, mssql 기준 read_committed_snapshot 이다. 

 

위 내용 중 틀린부분, 또는 추간내용 있다면 지적 부탁드립니다.


by 타락천사 [2019.04.16 22:55:30]

보충....

Oracle 은 Undo 를 통해서 읽어, 읽기가 DML 을 막지 않습니다.

그러나, sql server 에서는 Undo 자체가 없어 ( database level option 으로 지원 가능 ) 읽기가 DML 을 반대로 DML 이 읽기를 막을수 있는 구조입니다.

>> alter database henidb set read_committed_snapshot on >> Oracle Undo 처럼 sql server temp 를 통해 작동 


by 김혜니 [2019.04.17 13:15:08]

감사합니다^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입