KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

트랜잭션(Transaction)

연결된 노트와 함께 읽기

트랜잭션(Transaction)

2024년 11월 23일
  • 트랜잭션(Transaction)은 여러 데이터베이스(DataBase) 작업들을 하나의 단위로 묶어 처리하는 것을 의미한다.

  • 트랜잭션을 사용하면 작업들이 모두 완전히 수행되거나 하나라도 실패할 경우 전체가 취소(롤백)되도록 보장할 수 있다.

  • 이를 통해 데이터베이스(DataBase)의 일관성과 신뢰성을 유지할 수 있다.

  • 그만큼 데이터베이스(DataBase) 관리 시스템에서 매우 중요한 개념 중 하나이다.

​

ACID

  • 트랜잭션은 ACID 속성으로 알려져 있다.
  • 이는 데이터베이스(DataBase)의 정확성과 신뢰성을 보장하는 기본 요소이다.

원자성(Atomicity)

  • 트랜잭션에 포함된 모든 연산은 하나의 단위로 처리되어야 하며, 모두 성공하거나 모두 실패해야 한다.
  • 즉, 중간 단계에서 실패하면 트랜잭션 시작 전 상태로 롤백된다.

일관성 (Consistency)

  • 트랜잭션이 실행을 완료한 후에도 데이터베이스(DataBase)는 일관된 상태를 유지해야 한다.
  • 예를 들어, 데이터베이스(DataBase)의 무결성 제약 조건을 위반하지 않아야 한다.

독립성 (Isolation)

  • 동시에 여러 트랜잭션이 실행되고 있을 때, 각 트랜잭션은 다른 트랜잭션의 중간 실행 결과를 볼 수 없다.
  • 이는 각 트랜잭션이 서로 독립적으로 실행되는 것처럼 보장해야 한다는 의미이다.

지속성 (Durability)

  • 트랜잭션이 성공적으로 완료되면, 그 결과는 시스템의 어떤 장애가 발생하더라도 영구적으로 저장되어야 한다.
  • 즉, 시스템 장애 후에도 데이터는 손실되지 않는다.

트랜젝션의 문제점

Lost Update

  • 두 트랜잭션이 같은 데이터를 업데이트해서 하나의 업데이트가 손실되는 경우이다.

Dirty Reads

  • 아직 commit 되지 않은 값을 다른 트랜잭션이 읽는 경우이다.

Non-repeatable Reads

  • 한 트랜잭션에서 데이터를 두 번 읽을 때 다른 결과가 나오는 경우이다.

Phantom Reads

  • 첫 Read 이후에 다른 트랜잭션에서 데이터를 추가한 경우이다.

트랜젝션 레벨(Level)과 트랜젝션 이상현상(Anomaly)

![Pasted image 20241123191251.png](Pasted image 20241123191251.png)

  • 따라서 오차가 생기면 안되는 중요한 작업의 경우 트랜젝션의 문제를 모두 막을 수 있는 Serializable 레벨를 사용하면 된다.

Synapse Map Insight