[TIL] 트랜잭션의 ACID란?

woonie·2022년 2월 27일
0

TIL

목록 보기
40/64
post-custom-banner

항해 46일차

이전 글에서 트랜잭션에 대해서 찾아봤고 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다.

ACID?

  • ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 성질이다.

ACID속성

트랜잭션을 정의하는 4가지 중대한 속성을 가르킨다.
원자성(Atomicity), 일관성(Consistency), 격리(Isolation), 영속성(Durability) 을 의미한다.
데이터베이스 작업에 이러한 ACID속성이 있다면 ACID트랜잭션이라 부르고 이런 작업을 적용하는 데이터 스토리지 시스템을 트랜잭션 시스템이라고 한다.
ACID 트랜잭션은 한 테이블의 읽기, 쓰기, 수정 작업이 각각 아래와 같은 속성을 가지고 있다고 보장해준다.

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

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

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

  • 영속성(Durability) - 트랜잭션 실행으로 인해 데이터에 적용된 변경 사항이 저장되도록 보장한다. 시스템 오류가 발생해도 마찬가지다.

ACID 트랜잭션이 좋은 이유?

  • ACID 트랜잭션은 가능한 최대한의 데이터 안정성과 무결성을 보장해준다. 작업 하나가 일부분만 완료되는 바람에 데이터가 일관적이지 않은 상태가 되는 불상사가 절대로 일어나지 않게 해준다. 예를 들어 ACID 트랜잭션이 없다고 가정하면, 데이터베이스 테이블에 몇몇 데이터를 쓰던 중에 예기치 못하게 정전이 되면 데이터 중 일부는 저장이 되고 일부는 저장되지 않는 사태가 발생할 수 있다. 그러면 데이터베이스는 일관성 없는 상태가 되어 복구하기 무척 어렵고 시간도 오래 걸린다.
profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.
post-custom-banner

0개의 댓글