ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 트랜잭션
    데이터베이스 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

     

    댓글

Designed by Tistory.