VB.NET2013.12.18 11:10

Transaction Support(트랜잭션 지원)

트랜잭션 지원이란 분산 트랜잭션에서 호출자(Caller) 와 피 호출자(Callee) 사이의 데이터 무결성을 위해 트랜잭션 (참여) 범위지정 방식이다. MSDTC 서비스는 OLE 트랜잭션 이라 불리는 COM 기반의 트랜잭션 스펙이 기본이지만 XA 트랜잭션, TIP(Transaction Internet Protocol) 를 지원한다.

l  Disabled(사용안함)*
일반적으로 COM 으로 만들어진 컴포넌트를 COM+ 로 등록할 때 설정하는 옵션이며 트랜잭션을 사용하지 않는다는 의미(로컬 트랜잭션으로 동작)

l  Not Supported(지원하지 않음)
트랜잭션에 참여하지 않는다는 의미, 호출자가 트랜잭션이 있더라도 참여하지 않고 단순 실행(로그, 상태정보 처리기에 사용)(로컬 트랜잭션으로 동작)

l  Supported(지원함)
호출자(Caller)가 트랜잭션이 있다면 그 트랜잭션에 참여하지만 호출자가 트랜잭션이 없다면 단순 실행

l  Required(필수)
호출자(Caller)가 트랜잭션이 없어도 피호출자(Callee) 가 트랜잭션을 생성하여 트랜잭션 처리

l  Required New(새 트랜잭션 필요)*
호출자(Caller)가 트랜잭션이 있든 없든 새로운 트랜잭션을 생성하여 처리

 

* ) 의 경우 사용 시 주의

 

Transaction Isolation Levels(트랜잭션 격리 수준)

트랜잭션 격리 수준에서 주의해야 할 점은 다음과 같다. 피 호출자(Callee)는 호출자(Caller)의 격리수준과 동일하거나 낮아야 합니다. 피 호출자의 격리 수준이 높을 경우 오류가 발생합니다. 오라클인 경우 Read Committed, Serializable 만 지원함에 유의.

l  Serialized(연속됨)
COM+
를 등록하면 Default 로 설정이 되는 값. 하나의 트랜잭션이 데이터를 읽을 때 다른 모든 트랜잭션은 이전 트랜잭션이 끝날 때 까지 읽기, 쓰기 모두 할 수 없고 대기 해야 하는 상태. 또한 인덱스의 범위에 대해 잠금을 수행하기 때문에 잘못된 쿼리인 경우 전체 테이블 스캔이 발생하므로 유의

l  Repeatable read(반복할 수 있는 읽기)
하나의 트랜잭션이 읽는 동안 다른 트랜잭션이 변경(update) 을 할 수 없도록 잠그는 상태, 단 추가(insert) 는 가능

l  Read committed(커밋된 읽기)
다른 트랜잭션이 수정하는 동안 읽지 못하는 상태

l  Read uncommitted(커밋되지 않은 읽기)
다른 트랜잭션이 수정하는 동안에도 읽을 수 있는 상태

l  Any(모두)
호출자(Caller) 가 어떤 트랜잭션 격리 수준이든 충돌을 피하기 위해 적용되는 상태, 호출자의 격리수준과 동일하거나 낮게 설정되는 상태(항상 피 호출자인 경우는 이 옵션이 적절함)

 

[참고]

Transactions and Isolation Levels in COM+

COM+ and MTS Always Use SERIALIZABLE Transaction Isolation Level

Configuring Transactions

Configuring Transaction Isolation Levels

About COM+ Transaction Isolation Level

COM+ 트랜잭션과 오라클 OraMTS 실체

Understanding XA Transactions

 

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바