본문 바로가기

데이터베이스/SQLD

[SQLD] 트랜잭션

728x90

트랜잭션은 데이터베이스에서 중요한 개념으로, 데이터의 정합성을 유지하기 위해 작업들을 하나의 단위로 묶어 실행하는 것을 말합니다. 이는 작업이 모두 완료되거나 전혀 완료되지 않도록 보장합니다.

예시 설명

A라는 사람이 B라는 사람에게 100만원을 송금하는 상황을 예로 들겠습니다:

  1. A는 100만원을 송금합니다 (A의 계좌에서 100만원 차감).
  2. 송금 과정 중 오류가 발생하여 B의 계좌에 돈이 입금되지 않았습니다.

이 상황에서는 A의 계좌에서만 100만원이 빠져나가고 B의 계좌에는 아무 변화도 없습니다. 이런 경우를 방지하기 위해 트랜잭션을 사용합니다. 트랜잭션은 작업의 모든 부분이 성공적으로 완료되거나, 오류가 발생하면 아무 것도 변경되지 않도록 합니다.

트랜잭션의 중요성

트랜잭션은 데이터베이스의 정합성을 유지하는 데 필수적입니다. 작업이 완전하게 처리되거나 전혀 처리되지 않도록 보장하여 데이터 불일치를 방지합니다.

트랜잭션 관련 SQL 명령어 (TCL: Transaction Control Language)

  • COMMIT: 작업이 정상적으로 완료되어 데이터베이스에 반영됨. 예: 송금이 완료되면 데이터베이스에 반영.
  • ROLLBACK: 현재 작업을 취소하고 이전 상태로 되돌림. 예: 송금 중 오류가 발생하면 모든 변경사항을 원래대로 되돌림.
  • SAVEPOINT: ROLLBACK을 위한 저장점을 지정함. 예: 특정 지점까지의 변경사항을 저장하여 필요시 해당 지점으로 롤백할 수 있음.

트랜잭션의 특징 (ACID 특성)

  1. 원자성 (Atomicity): 트랜잭션에 포함된 모든 연산은 모두 성공하거나 모두 실패해야 합니다. "All or Nothing"의 개념입니다.
  2. 일관성 (Consistency): 트랜잭션은 데이터베이스의 정합성을 유지합니다. 트랜잭션 전후로 데이터베이스는 일관된 상태를 유지해야 합니다.
  3. 고립성 (Isolation): 하나의 트랜잭션이 완료되기 전까지 다른 트랜잭션이 간섭할 수 없습니다. 각 트랜잭션은 독립적으로 수행되어야 합니다.
  4. 영속성 (Durability): 트랜잭션이 완료되면 그 결과는 영구적으로 데이터베이스에 저장됩니다. 시스템 오류가 발생하더라도 데이터는 보존됩니다.

정리

트랜잭션은 데이터베이스에서 작업의 일관성과 정합성을 보장하기 위해 사용되는 중요한 개념입니다. 트랜잭션은 작업의 전체가 완료되거나 아무것도 완료되지 않도록 보장하여 데이터 불일치를 방지합니다. 트랜잭션의 주요 특성은 원자성, 일관성, 고립성, 영속성으로 요약되며, 이를 통해 데이터베이스의 안정성과 신뢰성을 유지할 수 있습니다.

 
 
728x90

'데이터베이스 > SQLD' 카테고리의 다른 글

[SQLD] 서브 쿼리  (0) 2024.08.14
[SQLD] NULL 속성  (0) 2024.08.13
[SQLD] 정규화  (1) 2024.07.30
[SQLD] Entity와 속성  (0) 2024.07.26
[SQLD] 모델링  (0) 2024.07.24