트랜잭션

업데이트: 2007년 11월

트랜잭션이라는 개념은 일련의 연속된 작업에 따라 데이터베이스의 결과가 달라지는 문제를 해결하기 위해 개발되었습니다. 이러한 문제가 발생하는 원인은 연속된 작업으로 인해 이전 작업 결과가 바뀔 수 있기 때문입니다. 이러한 경우에는 어느 한 작업이 실패하면 작업 결과의 상태를 예측할 수 없게 됩니다.

이러한 문제를 해결하기 위해 트랜잭션은 완벽한 최종 결과를 얻을 수 있도록 일련의 작업을 그룹화합니다. 이 경우, 모든 작업이 성공하여 커밋, 즉 데이터베이스에 쓰여지거나 전체 트랜잭션이 실패하거나 둘 중에 하나입니다. 트랜잭션을 취소하는 것을 롤백이라고 합니다. 롤백을 하면 변경 사항이 복구되고, 데이터베이스가 트랜잭션 이전 상태로 돌아갑니다.

예를 들어, 자동화된 뱅킹 트랜잭션으로 A 계좌에서 B 계좌로 송금하는 경우 자금을 정확히 처리하려면 A 계좌에서 출금하고 B 계좌로 입금하는 작업이 모두 성공해야 하며 그렇지 않은 경우 전체 트랜잭션이 실패해야 합니다.

트랜잭션에는 다음과 같은 내용을 나타내는 ACID 속성이 있어야 합니다.

  • 원자성   트랜잭션은 가장 작은 작업 단위이며 한 번만 실행됩니다. 즉, 작업이 모두 수행되거나 모두 수행되지 않습니다.

  • 일관성   트랜잭션은 하나의 일관된 데이터 상태를 또 다른 일관된 데이터 상태로 변환하여 데이터의 일관성을 유지합니다. 트랜잭션으로 바인딩된 데이터는 의미 구조가 변경되어서는 안 됩니다.

  • 격리   트랜잭션은 격리 단위로서, 각 트랜잭션은 동시 트랜잭션과는 별도로 발생합니다. 따라서 하나의 트랜잭션에서 다른 트랜잭션의 중간 단계를 절대로 볼 수 없어야 합니다.

  • 영속성   트랜잭션은 또한 복구 단위이기도 합니다. 트랜잭션이 성공하면 시스템이 충돌하거나 종료되어도 업데이트 내용은 그대로 유지됩니다. 트랜잭션이 실패하면 시스템은 트랜잭션을 커밋하기전 상태로 남아 있게 됩니다.

OLE DB(OLE DB에서 트랜잭션 지원 참조) 또는 ODBC(트랜잭션(ODBC) 참조)의 트랜잭션을 지원할 수 있습니다.

분산 트랜잭션이란 분산 데이터, 즉 네트워크로 연결된 하나 이상의 컴퓨터 시스템의 데이터를 업데이트하는 트랜잭션을 말합니다. 분산 시스템에서 트랜잭션을 지원하려면 OLE DB 트랜잭션 지원보다는 Microsoft .NET Framework를 사용해야 합니다.

Microsoft .NET Framework의 트랜잭션에 대한 자세한 내용은 Windows SDK(소프트웨어 개발 키트)의 트랜잭션 처리를 참조하십시오.

참고 항목

개념

데이터 액세스 프로그래밍