dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크
  • CTF
  • 자바
  • gcp
  • python #백준
  • db
  • 웹해킹
  • 클라우드
  • kotlin
  • java
  • 데이터베이스
  • 포너블
  • 침입탐지
  • 코드리뷰
  • cs
  • Guacamole
  • 자료구조
  • 머신러닝
  • 딥러닝
  • 인공지능

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

[DB] Transaction 트랜잭션
Database

[DB] Transaction 트랜잭션

2022. 10. 10. 11:38
728x90

 


트랜잭션(Transaction)이란?

 

트랜잭션이란 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용하는 단위이다.

즉, 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위이다.

 

💡 데이터베이스의 상태 변화
질의어(SQL)를 이용하여 데이터베이스에 접근하는 것
ex) SELECT, INSERT, DELETE, UPDATE 등

 

 

 트랜잭션 특징

 

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 트랜잭션의 특징을 말한다.

 

  • 원자성(Atomicity)
    • All or Nothing
    • 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 된다.
  • 일관성(Consistency)
    • 트랜잭션의 작업 처리 결과는 항상 일관성 있어야 한다.
  • 독립성(Isolation)
    • 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.
  • 지속성(Durability)
    • 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.

 

 트랜잭션 명령어

 

|  Commit

  • 모든 부분작업이 정상적으로 완료하면 이 변경사항을 한꺼번에 DB에 반영한다.
  • DB가 일관성있는 상태일 때 이를 알려주기 위해 사용하는 연산

 

|  Rollback

  • 부분 작업이 실패하면 트랜잭션 실행 전으로 되돌린다.
  • 하나의 트랜잭션 처리가 비정상적으로 종료되어 데이터베이스 일관성을 깨뜨렸을 때 트랜잭션의 일부가 정상적으로 
    처리되었더라도 트랜잭션의 원자성을 구현하기 위해 이 트랜잭션이 행한 모든 연산을 취소하는 연산

 

|  Savepoint

  • 일반적으로 ROLLBACK을 명시하면 INSERT, DELETE, UPDATE 등의 작업 전체가 취소되지만, SAVEPOINT를 사용하면 전체가 아닌 특정 부분에서 트랜잭션을 취소시킬 수 있다.

 

 

 트랜잭션 연산과정

 

https://blog.kakaocdn.net/dna/PDxus/btqB2uxivzk/AAAAAAAAAAAAAAAAAAAAAMm9mK3SceWtLswi0rop-Jckb3Axzc64WwxJYHffRjtn/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1769871599&allow_ip=&allow_referer=&signature=foBVVpKumL6vbqJDGsHNl9FiaPI%3D

 

단계 설명
활성(Active) 트랜잭션이 정상적으로 실행중인 상태
실패(Failed) 트랜잭션 실행에 오류가 발생하여 중단된 상태
철회(Aborted) 트랜잭션이 비정상적으로 종료되어 Rollback 연산을 수행한 상태
부분 완료(Partially Committed)  트랜잭션의마지막 연산까지 실행했지만, Commit 연산이 실행되기 직전의 상태
완료(Committed) 트랜잭션이 성공적으로 종료되어 Commit 연산을 실행한 후의 상태

 


참고

| https://gyoogle.dev/blog/computer-science/data-base/Transaction.html

| https://devuna.tistory.com/30

| https://wonit.tistory.com/462

728x90

'Database' 카테고리의 다른 글

[DB] Redis 레디스  (0) 2022.10.12
[MySQL] WITH, WITH RECURSIVE 사용법  (0) 2022.10.10
[DB] 정규화 & 비정규화  (0) 2022.10.07
[DB] Index & B-Tree  (2) 2022.10.05
[DB] SQL vs NoSQL  (4) 2022.10.03
    'Database' 카테고리의 다른 글
    • [DB] Redis 레디스
    • [MySQL] WITH, WITH RECURSIVE 사용법
    • [DB] 정규화 & 비정규화
    • [DB] Index & B-Tree
    dalgorithm
    dalgorithm

    티스토리툴바