트랜잭션은 논리 작업 단위를 정의하는 개체입니다. 트랜잭션을 참조하는 핸들이 있고 트랜잭션이 아직 커밋되거나 롤백되지 않은 경우 활성으로 간주되는 한 트랜잭션은 활성 상태입니다. 트랜잭션이 만들어지고 커밋 또는 롤백이 발생하기 전에 트랜잭션에 대한 모든 핸들이 닫힌 경우 트랜잭션이 롤백됩니다.
작업 범위를 지정하는 트랜잭션을 만든 다음 하나 이상의 리소스 관리자에 대한 업데이트를 수행하는 사용자 모드 트랜잭션 클라이언트의 경우를 고려합니다. 다음이 발생합니다.
클라이언트는 CreateTransaction 함수를 호출하여 트랜잭션을 만들고 해당 트랜잭션에 대한 핸들을 반환 값으로 받습니다.
트랜잭션은 여러 프로세스에서 열거나 상속할 수 있습니다. 따라서 각 프로세스는 트랜잭션에 포함됩니다. 이러한 프로세스가 실패하면 트랜잭션이 중단됩니다.
이 트랜잭션은 아직 지속되지 않을 수 있습니다. 트랜잭션이 추정 중단 로깅을 사용하는 경우 준비된 상태에 도달한 트랜잭션만 시스템 오류에서 복구해야 합니다.
클라이언트는 명시적으로 리소스 관리자에 트랜잭션을 전달해야 합니다.
클라이언트는 트랜잭션된 파일 시스템과 같은 하나 이상의 RM을 사용하여 모든 트랜잭션 작업을 수행합니다.
클라이언트는 CommitTransaction 함수를 호출합니다.
리소스 관리자는 KTM에서 해당 데이터를 준비하고 커밋하는 알림을 받습니다.
트랜잭션 및 스레드
트랜잭션은 스레드와 동일하지 않습니다. 여러 스레드 또는 프로세스는 단일 트랜잭션의 일부일 수 있습니다. 반대로 스레드는 서로 다른 시간에 여러 트랜잭션의 일부가 될 수 있습니다.
트랜잭션 함수
트랜잭션과 함께 사용되는 함수는 다음과 같습니다.
| 기능 | 묘사 |
|---|---|
| CommitTransaction | 지정된 트랜잭션을 커밋할 것을 요청합니다. |
| CommitTransactionAsync | 지정된 트랜잭션을 커밋할 것을 요청합니다. |
| CreateTransaction | 새 트랜잭션 개체를 만듭니다. |
| GetTransactionInformation | 지정된 트랜잭션에 대해 요청된 정보를 반환합니다. |
| OpenTransaction | 기존 트랜잭션을 엽니다. |
| rollbackTransaction | 지정된 트랜잭션을 롤백할 것을 요청합니다. |
| rollbackTransactionAsync | 지정된 트랜잭션을 롤백할 것을 요청합니다. 이 함수는 비동기적으로 반환됩니다. |
| SetTransactionInformation | 지정된 트랜잭션에 대한 트랜잭션 정보를 설정합니다. |