데이터베이스

트랜잭션

Bruno-Jang 2022. 3. 14. 18:58

# 트랜잭션이란

하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산들을 합친 논리적인 작업 단위이자

장애가 발생했을 때 데이터를 복구하는 작업 단위

 

트랜잭션이 중요한 이유는 다음과 같습니다.

데이터베이스는 데이터의 무결성*을 보장하는 것이 중요한데 아래의 ACID를 통해 이를 보장할 수 있습니다.

DBMS의 성능은 초당 트랜잭션의 실행 수인 TPS (Transaction Per Second)로 측정하기에 트랜잭션이 중요합니다.

 

* 데이터의 무결성

- 부정합을 방지하고자 데이터의 정확성, 일관성, 유효성이 유지되는 것을 의미한다.

 

# 트랜잭션이 중요한 이유는?

데이터베이스의 일관성을 유지하면서 장애가 발생했을 때 안정적으로 데이터를 복구하기 위해서입니다.

 

# 트랜잭션의 특징 (ACID)

  • 원자성 (Atomicity)
  • 일관성 (Consistency)
  • 독립성 (Isolation)
  • 지속성 (Durability)

원자성 (Atomicity)

  • All or Nothing을 의미 (작업 단위의 일부분만 실행되는 상황을 막겠다는 의미)
  • 트랜잭션 단위로 작업이 모두 완료되거나 그렇지 못한 경우에는 트랜잭션을 수행하기 이전 상태로 되돌려야 함을 의미

 

일관성 (Consistency)

  • 트랜잭션 전과 후 모두 데이터베이스의 제약이나 규칙을 만족해야 하는 것을 의미

 

독립성 (Isolation)

  • 수행 중인 다른 트랜잭션을 참고하거나 간섭할 수 없다. (데이터가 꼬이는 것을 막기 위해)
    즉, 연관되어 있을 경우 참고할 트랜잭션의 작업이 끝나야 접근할 수 있다.
    이를 Locking이라고 한다.
  • 독립성 레벨로 설정 가능
    독립성 레벨이 높을 경우에는 데이터가 꼬일 확률이 낮아지지만 많은 시스템 자원을 필요로 할 것이다.
    독립성 레벨이 낮을 경우에는 반대로 적은 시스템 자원을 필요로 하겠지만 데이터가 꼬일 확률은 높아진다.

 

지속성 (Durability)

  • 성공한 트랜잭션은 데이터베이스에 반영되어야 하고 이는 어떤 경우에도 손실되지 않고 영구적이어야 한다.
  • 트랜잭션의 지속성을 보장하려면 시스템에 장애가 발생할 경우에 복구할 수 있는 복구 기능이 필요하다.
  • 로그를 이용하여 구현

 

# 트랜잭션 연산의 종류

1. Commit 연산

트랜잭션이 성공적으로 완료되면 이 기점이 새로운 기점으로 저장되어 복구해야 할 경우 이 기점들을 기준으로 삼으며 모든 변경 내용을 데이터베이스에 영구적으로 반영

 

2. Rollback 연산

  • 트랜잭션 수행이 실패했을 경우에 하는 연산 작업
  • 데이터베이스의 일관성을 유지하기 위해 해당 트랜잭션이 수행되기 이전의 상태로 되돌리는 것

 

# 트랜잭션 상태

트랜잭션 상태

 

# 데이터베이스에서 발생하는 장애

  • 트랜잭션 장애
  • 시스템 장애 - 하드웨어 결함
  • 미디어 장애 - 디스크 장치의 결함으로 디스크에 저장된 데이터베이스 일부 혹은 전체가 손상된 상태

 

# Undo와 Redo란?

Undo

  • 트랜잭션 로그를 활용하여 오류와 관련된 모든 변경 취소하여 복구 실행
  • 로그 파일에 시작(START)은 있고 종료(COMMIT)은 없는 경우

 

Redo

  • 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재수행하여 복구 실행
  • 로그 파일에 시작(START)과 종료(COMMIT) 모두 있는 경우

 

 

다음에는 데드락에 대해 알아보겠습니다.

 

 

<참고 자료>

트랜잭션에 대한 전반적인 내용을 잘 써주셔서 공유드립니다.

https://brunch.co.kr/@skeks463/27#comment

 

[DataBase] DB를 지탱하는 트랜잭션

데이터 베이스는 우리가 흔히 사용하는 파일 시스템과는 달리 기본적으로 4가지 특징이 존재한다.   1) 실시간 접근성 2) 계속적인 변화 3) 동시 공유 4) 내용에 따른 참조  이외에도 디비의 장

brunch.co.kr

 

ACID를 왜 지켜야 하며 그에 대한 예시들을 통해 보다 이해하기 쉽게 써주셔서 공유드립니다.

https://do-my-best.tistory.com/50

 

1.트랜잭션의 4대 특징, ACID

0. 트랜잭션이란? / 트랜잭션의 4대 특징 ACID란? 트랜잭션이란 DBMS (DB) 에서 데이터에 대한 하나의 논리적 실행단계를 의미한다. 여기서 트랜잭션의 4대 특징이란 트랜잭션이 안전하게 수행된다는

do-my-best.tistory.com