[데이터베이스] 트랜잭션(Transaction)

2023. 7. 18. 11:39·CS 지식/[데이터베이스]
목차
  1. 트랜잭션
  2. 트랜잭션 특징
  3. 1) 원자성(Atomicity)
  4. 2) 일관성(Consistency)
  5. 3) 독립성(Isolation)
  6. 4) 지속성(Durability)
  7. Commit
  8. Rollback

트랜잭션

  • 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위

상태를 변화시킨다는 것 → SQL 질의어를 통해 DB에 접근하는 것

- SELECT
- INSERT
- DELETE
- UPDATE

작업 단위 → 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것

예시) 사용자 A가 사용자 B에게 만원을 송금한다.
* 이때 DB 작업
- 1. 사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경
- 2. 사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경
현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문
→ 이를 통틀어 하나의 트랜잭션이라고 한다.
- 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(트랜잭션)"이 완료되는 것이다. `Commit`
- 작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 돌려놓아야한다. `Rollback`

즉, 하나의 트랜잭션 설계를 잘 만드는 것이 데이터를 다룰 때 많은 이점을 가져다준다.

트랜잭션 특징

1) 원자성(Atomicity)

  • 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 됨

2) 일관성(Consistency)

  • 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 함

3) 독립성(Isolation)

  • 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없음

4) 지속성(Durability)

  • 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 함

Commit

  • 하나의 트랜잭션이 성공적으로 끝났고, DB가 일관성있는 상태일 때 이를 알려주기 위해 사용하는 연산

Rollback

  • 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션 원자성이 깨진 경우
  • transaction이 정상적으로 종료되지 않았을 때, last consistent state (예) Transaction의 시작 상태) 로 roll back 할 수 있음
저작자표시 비영리 변경금지 (새창열림)

'CS 지식 > [데이터베이스]' 카테고리의 다른 글

[데이터베이스] 데이터베이스 무결성  (1) 2023.07.18
[데이터베이스] DBMS  (0) 2023.07.18
[데이터베이스] 정규화(Normalization)  (0) 2023.07.18
[데이터베이스] 인덱스(Index)  (0) 2023.07.18
[데이터베이스] 이상(Anomaly)  (0) 2023.07.18
  1. 트랜잭션
  2. 트랜잭션 특징
  3. 1) 원자성(Atomicity)
  4. 2) 일관성(Consistency)
  5. 3) 독립성(Isolation)
  6. 4) 지속성(Durability)
  7. Commit
  8. Rollback
'CS 지식/[데이터베이스]' 카테고리의 다른 글
  • [데이터베이스] 데이터베이스 무결성
  • [데이터베이스] DBMS
  • [데이터베이스] 정규화(Normalization)
  • [데이터베이스] 인덱스(Index)
woojin._.
woojin._.
여러가지 개발을 해보며 발생하는 이야기들에 대한 블로그입니다:)
  • woojin._.
    Jin's Dev Story
    woojin._.
  • 전체
    오늘
    어제
    • 분류 전체보기 (827) N
      • Tools (25)
        • eGovFrame (3)
        • GeoServer (3)
        • QGIS (2)
        • LabelImg (2)
        • Git (6)
        • GitHub (1)
        • Eclipse (7)
        • Visual Studio (1)
      • Web & Android (121)
        • SpringBoot (37)
        • Three.js (2)
        • Spring Data JPA (9)
        • 스프링 부트 쇼핑몰 프로젝트 with JPA (25)
        • Thymeleaf (4)
        • Spring Security (15)
        • Flutter (29)
      • Programming Language (61)
        • JAVA (27)
        • JavaScript (14)
        • Dart (2)
        • Python (15)
        • PHP (3)
      • Database (43)
        • PostgreSQL (32)
        • MYSQL (7)
        • Oracle (3)
        • MSSQL (1)
      • SERVER (17)
        • TCP_IP (3)
        • 리눅스 (7)
        • AWS (7)
      • Coding Test (443) N
        • 백준[JAVA] (106) N
        • 프로그래머스[JAVA] (260)
        • 알고리즘 고득점 Kit[JAVA] (3)
        • SQL 고득점 Kit[ORACLE] (74)
      • CS 지식 (49)
        • [자료구조] (14)
        • [네트워크] (12)
        • [데이터베이스] (10)
        • [알고리즘] (9)
        • [운영체제] (4)
      • 기타 (6)
      • 자격증 & 공부 (62)
        • 정보처리기사 (2)
        • SQLD (6)
        • 네트워크관리사 2급 (5)
        • 리눅스마스터 1급 (44)
        • 리눅스마스터 2급 (1)
        • ISTQB (3)
        • 시스템보안 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    CS지식
    DB
    Spring Security
    Oracle
    시큐리티
    자바
    postgresql
    pcce 기출문제
    Java
    JPA
    springboot
    스프링
    스프링 부트 쇼핑몰 프로젝트 with JPA
    python
    백준
    리눅스마스터
    리눅스마스터 1급
    데이터
    플러터
    baekjoon
    Flutter
    프로그래머스
    programmers
    리눅스
    CS
    Linux
    backjoon
    spring
    스프링부트
    데이터베이스
  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
woojin._.
[데이터베이스] 트랜잭션(Transaction)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.