다음을 통해 공유


2단계 커밋 트랜잭션 처리

이 항목에서는 COM+, TI(트랜잭션 통합자) 및 CICS에서 Microsoft DTC(Distributed Transaction Coordinator)가 처리하는 동안 2PC(2단계 커밋) 트랜잭션에서 발생하는 작업을 설명합니다.

클라이언트 애플리케이션이 TI 개체를 포함하는 .NET 애플리케이션에서 메서드를 호출할 때 프로세스가 시작됩니다. 그런 다음 .NET은 사용자 스레드 풀에서 트랜잭션에 대한 스레드를 할당하고, 트랜잭션을 시작하고, 메서드의 입력 매개 변수를 TI 런타임 환경에 전달합니다. 이 스레드는 응답이 CICS 호스트에서 돌아올 때까지 트랜잭션에 대해 차단됩니다. 이는 CICS 애플리케이션이 트랜잭션 비즈니스 논리를 처리하고 필요에 따라 데이터베이스에 액세스하는 데 걸리는 대부분 시간(전송 속도가 LAN 속도를 유지한다고 가정)으로 구성된 작업 시간 단위입니다. 메서드의 출력 매개 변수가 호스트에서 .NET으로 다시 전송되면 커밋 메시지 DTC로 전송됩니다.

DTC는 트랜잭션에 대한 준비 단계를 활성화하여 TI가 2PC 스레드 풀에서 스레드를 할당하고 요청 커밋 메시지 호스트에서 도착할 때까지 차단된 상태로 유지합니다. 트랜잭션의 모든 포크가 준비되면 DTC는 커밋 완료 메시지를 .NET에 보낸 다음 메서드의 출력 매개 변수를 보내고 값을 호출 클라이언트 애플리케이션으로 다시 보내고 스레드를 해제합니다.

이렇게 하면 사용자에 대한 트랜잭션이 완료되지만 트랜잭션 모니터(DTC 및 CICS)는 커밋의 두 번째 단계를 완료해야 하며, 다시 말하지만 TI 2PC 스레드 풀의 스레드는 커밋의 두 번째 단계를 수행하는 각 트랜잭션에 대해 할당됩니다.

참고 항목

장기 실행 TP(트랜잭션 프로그램)
트랜잭션 통합자 성능 가이드