ACID 와 트랜잭션

WorkFace·2025년 2월 2일

트랜잭션은 무엇일까?

  • 데이터베이스의 트랜잭션은 데이터베이스의 상태를 바꾸게 하기 위해서 수행되는 작업의 최소 단위를 의미합니다.

데이터베이스의 상태를 변화 시킨다는 것은 무얼 의미하는 것일까?

  • 간단하게 말한다면 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미한다.
    • SELECT
    • INSERT
    • DELETE
    • UPDATE
      위와 같은 쿼리를 날려 연산을 수행하는 것이다.
  • 트랜잭션의 필요성
  • 트랜잭션은 작업의 완전성을 보장해 주는 것입니다.
    논리적인 작업들을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우 이전 상태로 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 만들어 주는 기능입니다.
  • 예시)
    많은 사람들은 ATM기계에서 카드를 이용해 계좌이체를 한 경험이 있을 것입니다.이 때 ATM기계를 작동하는 도중에 기계오류나 정전 등과 같은 예기치 못한 상황이 발생하여카드가 나오지 않거나 기계가 멈추는 경우가 있습니다. 이 때 가장 우려되는 것은 내 계좌에선 금액이 빠져나간 것으로 기록되고정작 상대방 계좌에는 이체가 되지 않는 상황입니다.트랜잭션이란 바로 이러한 문제가 발생되지 않도록 하는 강력한 수단을 제공해주는 것입니다.즉, 내 계좌에서 금액이 빠져나가기 전 상태로 돌아가던지, 아니면 상대방 계좌에 이체가 성공적으로 끝나도록 보장해줘야 합니다.
  • 트랜잭션의 성질
    • 트랜잭션이 성공적으로 처리되어 데이터베이스의 무결성과 일관성을 보장하려면 4가지 특성을 만족해야 하는데 그 특성을 영어 단어들의 첫자를 따서 ACID 라고 합니다.

ACID는 무엇일까?

- A : Atomicity(원자성) :

트랜잭션에 속한 각각의 문(데이터를 읽기, 쓰기, 업데이트 또는 삭제하기 위함)을 하나의 단위로 취급합니다. 문 전체를 실행하거나 그 문의 어떤 부분도 실행하지 않거나 둘 중 하나입니다. 이 속성이 있으면 예컨데 스트리밍 데이터 소스가 스트리밍 중에 갑자기 오류를 일으키더라도 데이터 손실과 손상이 방지됩니다.

- C : Consistency(일관성)

트랜잭션이 테이블에 변경 사항을 적용할 때 미리 정의된, 예측할 수 있는 방식만 취합니다. 트랜잭션 일관성이 확보되면 데이터 손상이나 오류 때문에 테이블 무결성에 의도치 않은 결과가 생기지 않습니다

- I : Isolation(격리)

여러 사용자가 같은 테이블에서 모두 동시에 읽고 쓰기 작업을 할 때, 각각의 트랜잭션을 격리하면 동시 트핸잭션이 서로 방해하거나 영향을 미치지 않습니다. 각각의 요청이 실제로는 모두 동시에 발생하더라도, 마치 하나씩 발생하는 것처럼 발생할 수 있습니다.

- D : Durability(영속성)

트랜잭션 실행으로 인해 데이터에 적용된 변경 사항이 저장되도록 보장합니다. 시스템 오류가 발생해도 마찬가지 입니다.

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.

0개의 댓글