Database

[DB] Transaction 트랜잭션

dalgorithm 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://k.kakaocdn.net/dn/PDxus/btqB2uxivzk/ERRntkdAzfbibpUlXmtohK/img.png

 

단계 설명
활성(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