트랜잭션 소개 - 8

2023. 5. 13. 08:56·Database & Data/기초지식
728x90
SMALL

트랜잭션이란?

데이터베이스에서 한 번에 수행되어야 할 일련의 연산을 의미

 

1)  네 가지 특성(ACID 속성)


- 원자성(Atomicity)
트랜잭션에 포함된 연산들은 모두 성공하거나, 아니면 하나도 수행되지 않아야 한다.
즉, 트랜잭션 내의 연산들은 분할될 수 없는 최소의 단위로 처리되어야 한다.

- 일관성(Consistency)
트랜잭션이 성공적으로 완료되면 데이터베이스는 일관성 있는 상태를 유지해야 한다.
예를 들어, 무결성 제약 조건을 만족하는 등의 데이터베이스의 일관성이 보장되어야 한다.

- 독립성(Isolation)
한 트랜잭션이 수행되는 동안 다른 트랜잭션은 그 연산을 볼 수 없다.
즉, 각 트랜잭션은 서로 독립적으로 수행되어야 한다.

- 영속성(Durability)
트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 반영되어야 한다.
시스템에 문제가 생기더라도, 한번 완료된 트랜잭션의 결과는 보존되어야 한다.

※ Atomic

- DDL이나 DML 중 레코드를 수정/추가/삭제한 것에만 의미가 있다.

- SELECT에는 트랜잭션을 사용할 이유가 없다.

 

2) 예시 코드(은행 간 거래)

 은행 계좌 간의 이체를 다룬다면, 계좌 A에서 계좌 B로 $100 이체하는 트랜잭션은 다음과 같이 SQL로 표현될 것이다.

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE account_id = 'A';

UPDATE accounts SET balance = balance + 100 WHERE account_id = 'B';

COMMIT;

위의 SQL 코드에서 START TRANSACTION;은 트랜잭션의 시작이다.
이후 두 개의 UPDATE 문은 각각 계좌 A에서 $100을 빼고, 계좌 B에 $100을 더하는 연산을 수행한다.
마지막으로 COMMIT;은 트랜잭션을 완료하고 데이터베이스에 변경 사항을 영구적으로 반영한다.

이 트랜잭션의 중요한 특징은, 두 개의 UPDATE 문이 모두 성공해야만 COMMIT이 실행되고 그렇지 않으면 ROLLBACK이 실행된다.
ROLLBACK은 트랜잭션 내의 모든 연산을 취소하고 데이터베이스를 트랜잭션 시작 전 상태로 되돌린다.
이를 통해 위에서 설명한 원자성(Atomicity)이 보장된다.
728x90
SMALL
저작자표시 비영리 변경금지 (새창열림)

'Database & Data > 기초지식' 카테고리의 다른 글

개념적, 논리적, 물리적 모델(이해 위주)  (0) 2023.05.26
데이터 조직에 대해  (0) 2023.05.22
고급 SQL 다루기  (0) 2023.05.12
Join 소개  (0) 2023.05.11
GROUP BY와 CTAS - 4  (0) 2023.05.10
'Database & Data/기초지식' 카테고리의 다른 글
  • 개념적, 논리적, 물리적 모델(이해 위주)
  • 데이터 조직에 대해
  • 고급 SQL 다루기
  • Join 소개
동석해요
동석해요
공부하고 싶은게 많은, 사소한 IT 지식들 공유
    250x250
  • 동석해요
    개발로 자기계발
    동석해요
  • 전체
    오늘
    어제
    • 분류 전체보기 (226)
      • Develop (126)
        • 기초지식 (12)
        • FastAPI (102)
        • Django (11)
      • Database & Data (62)
        • 기초지식 (16)
        • MySQL (29)
        • PostgreSQL (8)
        • 데이터 분석 (9)
      • 인공지능 (11)
        • PyTorch (9)
      • Cloud (8)
        • AWS (4)
        • GCP (2)
      • 버그처리 (14)
      • 회고 & 일상 (5)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
동석해요
트랜잭션 소개 - 8
상단으로

티스토리툴바