트랜잭션이란?
DBMS가 데이터베이스를 다룰 때 사용하는 작업 단위이다.
DB에서의 작업 단위 의미
- 데이터를 다룰 때 장애가 일어나는 경우가 있는데, 트랜잭션은 장애 발생 시 데이터를 복구하는 작업의 단위가 된다.
- 여러 작업이 동시에 같은 데이터를 다룰 때가 있는데, 트랜잭션은 이 작업을 서로 분리하는 단위가 된다.
데이터베이스에서의 트랜잭션
데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며,
쿼리를 사용하여 접근할 수 있고 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.
트랜잭션 필요 상황
콘서트 티켓을 예약하는 상황에서 여러 사용자가 동시에 예약을 시도할 수 있으며,
특정 자리가 이미 예약되었다면 다른 사용자가 그 자리를 예약할 수 없어야 한다.
즉, 예약과 예약 실패하는 과정을 묶을 때 필요한 것이 트랜잭션이다.
트랜잭션 처리 방법
- 사용자가 특정 자리를 예약하기 위해 트랜잭션을 시작합니다.
- 해당 자리가 이미 예약되었는지 확인합니다..
- 만약 해당 자리가 이미 예약되었다면, 예약이 실패하고 트랜잭션을 롤백합니다.
- 해당 자리가 예약되지 않았다면, 예약을 완료하고 트랜잭션을 커밋합니다.
위 처리 방법에서 알 수 있듯이 테이블의 데이터를 읽고 다른 테이블에 데이터를 입력, 갱신, 삭제하는 도중에 오류가 발생하면 모든 작업을 원상태로 복구하고, 모든 과정이 성공하였을 때만 결과를 반영한다.
트랜잭션의 네 가지 성질
- 원자성(Atomicity) : 트랜잭션에 포함된 작업은 전부 수행되거나 수행되지 않아야 한다.
- 일관성(Consistency) : 트랜잭션을 수행하기 전이나 수행한 후나 데이터베이스는 항상 일관된 상태를 유지해야 한다.
더보기
조건 예시 : 국민 계좌 + 토스 계좌 = 3만 원인 경우 국민 계좌에서 2만 원을 인출하여 토스 계좌에 입금하기 전에 총액이 일시적으로 만 원으로 줄어드는 일관성 없는 상태가 되는데 트랜잭션이 종료된 후에는 총액이 3만 원이 되어야 한다.
- 고립성(Isolation) : 작업 중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터에 접근할 수 없어야 한다.
- 지속성(Durability) :
작업을 완료한 트랜잭션은 변경 데이터를 영구적으로 저장해야 한다.
저장된 데이터베이스는 저장 직후 또는 언제나 발생할 수 있는 오류에 영향받지 않아야 한다.
트랜잭션의 상태도
트랜잭션은 수행을 완료하면 부분완료 혹은 실패 상태 중 하나가 된다.
DBMS는 부분완료 상태에서는 작업한 내용을 데이터베이스에 반영하고, 실패한 상태는 작업한 내용을 취소한다.
- 부분완료 : 작업은 완료됐지만 변경 내용이 DB에 기록되었는지 확실하지 않은 상태
- 실패 : 트랜잭션을 중간에 중단하였거나 부분완료 상태에서 변경 내용을 DB에 저장하지 못한 상태.
'CS > 데이터베이스' 카테고리의 다른 글
RDB - NoSQL 차이점 (1) | 2024.03.18 |
---|---|
트랜잭션 격리 수준 (0) | 2024.03.14 |
동시성 제어 (1) | 2024.03.14 |
ERD-정규화 (0) | 2024.03.11 |
Key (0) | 2024.03.10 |