Home ACID
Post
Cancel

ACID

ACID

[TOC]

ACID란

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

트랜잭션에는 4가지의 특성이 있다.

원자성 (Atomicity)

  • 트랜잭션의 작업이 부분적으로 실행되거나 중단되지 않는 것을 보장하는 것을 말한다.
  • 즉, All oro Nothing의 개념으로써 작업 단위를 일부분만 실행하지 않는다는 것을 의미한다.

원자성 보장

트랜잭션에서 원자성은 수행하고 있는 트랜잭션에 의해 변경된 내역을 유지하면서, 이전에 commit된 상태를 임시 영역에 따로 저장함으로써 보장한다.

현재 수행하고 있는 트랜잭션에서 오류가 발생하면 현재 내역을 날려버리고 임시 영역에 저장했던 생태로 rollback한다.

이전 데이터들이 임시로 저장되는 영역을 롤백 세그먼트라고 하며, 현재 수행하고 있는 트랜잭션에 의해 새롭게 변경되는 내역을 데이터베이스 테이블이라고 한다. 트랜잭션의 원자성은 롤백 세그먼트에 의해 보장된다고 할 수 있다.

오류가 발생하면 rollback을 하는데, 트랜잭션의 길이가 길어지면 오류가 발생하지 않는 부분도 다시 처음부터 작업을 수행해야 한다. 따라서 확실한 부분에 대해서는 rollback이 되지 않도록 중간 저장 지점인 save point를 지정할 수 있다. save point를 지정할 수 있다. save point를 지정하면 rollback할 때 save point 이전은 확실하다고 간주하고 그 이후부터 진행하게 된다.

일관성 (Consistency)

  • 트랜잭션이 성공적으로 완료되면 일관적인 DB상태를 유지하는 것을 말한다.
  • 여기서의 일관성이란 작업 전 후 모두 한 컬럼의 데이터 타입이 유지되어야 한다는 것이다.

일관성 보장

트랜잭션에서 일관성은 트랜잭션 수행 전, 후에 데이터 모델의 모든 제약조건(PK, FK…)을 만족하는 것을 통해 보장한다.

즉, 한 테이블에서 PK의 제약조건이 변경되면 다른 테이블에서 FK의 제약조건도 변경되어야 한다. 한 쪽의 테이블에만 데이터 변경사항이 이루어지면 안되는 것이다.

어떤 이벤트조건이 발생했을 때, 트리거를 통해 보장한다.

트리거는 데이터베이스 시스템이 자동적으로 수행할 동작을 명시하는데 사용된다.

격리성 (Isolation)

  • 트랜잭션 수행 시 다른 트랜잭션의 작업이 끼어들지 못하도록 보장하는 것을 말한다.
  • 트랜잭션끼리는 서로를 간섭할 수 없다.

격리성(고립성) 보장

트랜잭션이 고립성을 보장하는 방법에 대해 이해하기 위해서는 병행 트랜잭션에 대해 먼저 알아야 한다.

1. 병행 처리(concurrent processing)

CPU가 여러 프로세스를 처리하는 것처럼, 트랜잭션에 정해진 시간을 할당해서 작업을 하다가 부여된 시간이 끝나면, 다른 트랙잭션을 실행하는 이런 방식으로 트랜잭션들을 조금씩 처리하는 것을 말한다.

그런데 이렇게 되면 많은 트랜잭션들이 조금씩 처리되는 과정에서 공통된 데이터를 조작하게 되는데, 이 경우 데이터가 혼란스러워 질 수 있다.

지속성 (Durability)

  • 성공적으로 수행된 트랜잭션은 영원히 반영이 되는 것을 말한다.
  • commit을 하면 현재 상태는 영원히 보장된다.
This post is licensed under CC BY 4.0 by the author.