게으른 개발자의 끄적거림

트랜잭션(Transaction)이란?

끄적잉 2023. 7. 31. 22:00
728x90

트랜잭션은 데이터베이스 관리 시스템(DBMS)에서 수행되는 작업의 단위를 의미합니다. 이 작업은 하나 이상의 쿼리를 포함하며, 데이터베이스에서 상태를 변경하거나 정보를 검색하는 등의 작업을 포함할 수 있습니다. 트랜잭션은 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 특성을 만족해야 합니다. 이 특성들은 "ACID"라고 불리기도 합니다.

 

예를 통해 트랜잭션 개념을 자세하게 설명해보겠습니다. 가정하에 은행 시스템이 있다고 가정하겠습니다.

  • 원자성(Atomicity): 트랜잭션은 모든 작업이 하나의 논리적 단위로 간주되어야 합니다. 즉, 모든 작업이 성공적으로 완료되거나, 아니면 전혀 수행되지 않아야 합니다.

예시: 고객이 은행 계좌로 100달러를 입금하는 작업과 이를 기록하는 작업이 하나의 트랜잭션으로 간주됩니다. 이 작업들은 모두 성공적으로 완료되거나, 입금은 취소되고 기록도 삭제되어야 합니다.

 

 

  • 일관성(Consistency): 트랜잭션의 실행 전과 실행 후에도 데이터베이스는 일관된 상태를 유지해야 합니다. 즉, 트랜잭션이 실행되기 전의 조건에 따라 데이터베이스가 유효한 상태여야 합니다.

예시: 고객이 은행 계좌로 100달러를 입금하려고 시도하지만 계좌 잔액이 음수가 되지 않도록 합니다. 따라서 트랜잭션이 실행 전에는 계좌 잔액이 충분해야 합니다.

 

 

  • 격리성(Isolation): 여러 트랜잭션이 동시에 실행될 때, 하나의 트랜잭션은 다른 트랜잭션에 의해 영향을 받지 않도록 격리되어야 합니다. 이렇게 함으로써 데이터베이스의 무결성이 유지됩니다.

예시: 동시에 두 명의 고객이 같은 은행 계좌로 돈을 입금하려고 할 때, 한 트랜잭션이 계좌 잔액을 변경 중인 동안 다른 트랜잭션은 해당 계좌에 대한 작업을 수행할 수 없습니다.

 

 

  • 지속성(Durability): 트랜잭션이 성공적으로 완료된 후에는 해당 변경 사항이 영구적으로 데이터베이스에 저장되어야 합니다. 시스템 장애 또는 중단이 발생해도 데이터베이스가 복구될 때, 완료된 트랜잭션의 결과가 손실되어서는 안됩니다.

예시: 고객이 은행 계좌로 100달러를 입금하여 트랜잭션이 완료된 경우, 해당 입금 내역은 데이터베이스에 영구적으로 저장되어야 합니다.

 

이렇게 트랜잭션은 데이터베이스에서 데이터 무결성을 보장하고, 동시성 문제를 방지하기 위해 ACID 특성을 준수하며 수행됩니다.

728x90