[TIL] 20210520_트랜잭션, ACID

BANSEOK SUH·2021년 5월 20일
0

TIL

목록 보기
18/22
post-thumbnail

트랜잭션(Transaction)이란?

데이터베이스의 상태를 변환시키기 위해 수행되는 하나 이상의 쿼리를 모아 놓은 하나의 작업 단위입니다.

예를 들어, 게시글을 작성하고 작성 버튼을 누르고 나면, 작성자는 자신의 게시글이 포함된 게시판을 보게 됩니다. 이것이 하나의 작업 단위가 되고, 트랜잭션이 됩니다.


ACID란?

트랜젝션이 안전하게 수행된다는 것을 보장하기 위한 성질입니다.

ACID는 알파벳 수만큼 4개의 특징을 가지는데요, 각각을 살펴보도록 하겠습니다.


A - Atomicity

원자성

첫 번째로, 원자성은 트랜잭션에 포함된 모든 작업들이 데이터베이스에 모두가 반영이 되던가, 모두가 반영이 되지 않던가 해야 한다는 것입니다.

예를 들어, A 테이블에 데이터를 입력함과 동시에 B 테이블에도 데이터를 입력하는 것이 하나의 트랜잭션이라면, 둘 중 하나의 로직만 처리되면 안 되기 때문입니다. 하나의 트랜잭션은 하나의 원자와 같이 함께 처리되어야 합니다.

둘 중 하나의 작업이 실패하였다면, 트랜잭션의 모든 작업을 취소하는 것을 롤백(rollback)이라고 합니다.


C - Consistency

일관성

두 번째로, 일관성은 하나의 트랙잭션 이후에 데이터베이스는 일관된 상태를 유지해야 한다는 것입니다.

시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후가 같아야 합니다.


I - Isolation

고립성

세 번째로, 고립성은 둘 이상의 트랜잭션이 동시에 실행될 경우, 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 영향을 줄 수 없다는 것입니다.

내 계좌에서 A 계좌에 10만원을 보내는 것과 B 계좌에 10만원을 보내는 트랜잭션은 각각 독립적이라는 것입니다. 내 계좌에서는 도합 20만원이 빠져나갔지만, A에 보내는 트랜잭션과 B에 보내는 트랜잭션은 서로 영향을 주지 않습니다.


D - Durability

지속성

마지막으로, 지속성은 트랜잭션이 성공적으로 완료됐을 경우, 그 기록은 영구적으로 남아있어야 한다는 것입니다.

예를 들어, A 계좌로 10만원을 이체한 직후 은행 서버에 에러가 났다면, A에 대한 트랜잭션은 성공했기 때문에, 그 기록이 영구적으로 남아 있어야 합니다.

하지만 트랜잭션 완료 이전에 에러가 난다면, 그것은 rollback 처리가 되어 기록에 남지 않게 됩니다.


profile
HelloBanny

0개의 댓글