[Database] ACID란?

bagt13·2022년 10월 21일
0

Database

목록 보기
3/8
post-thumbnail

예전에 학습했던 내용들이지만, 기억이 희미해져 이번에 정리해놓으려 합니다.


✅ ACID란?

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


📚 Atomicity(원자성)

하나의 트랜잭션에 속한 모든 작업이 전부 성공하거나 전부 실패해서 결과를 예측할 수 있어야 한다.

SQL에서도 마찬가지로 특정 쿼리를 실행했는데 부분적으로 실패하는 부분이 있다면 전부 실패하도록 구현되어 있다.


📚 Consistency (일관성)

데이터베이스의 상태가 일관되어야 한다는 성질이다. 트랜잭션 이후의 데이터베이스의 상태는 이전과 같이 유효해야 한다.

여기서 말하는 일관되다는 뜻은 데이터 값을 말하는 것이 아니다. 트랜잭션이 이후에도 데이터베이스의 제약/규칙 (not null 등)을 만족해야 한다는 뜻이다.


📚 Isolation(격리성, 독립성)

모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 한다는 뜻이다.

실제로 동시에 여러 개의 트랜잭션들이 수행될 때, 각 트랜젝션은 고립(격리)되어 있어 연속으로 실행된 것과 동일한 결과를 나타낸다.

격리성을 지키는 각 트랜젝션은 철저히 독립적이기 때문에 다른 트랜젝션의 작업 내용을 알 수 없으며, 트랜잭션이 동시에 실행될 때와 연속으로 실행될 때의 데이터베이스 상태가 동일해야 한다.


📚 Durability(지속성)

하나의 트랜잭션이 성공적으로 수행되었다면, 해당 트랜잭션에 대한 로그 (기록)가 남아야 한다. 만약 Runtime 오류나 시스템 오류가 발생하더라도 해당 기록은 영구적이어야 한다는 뜻이다.


트랜잭션 수행을 로그로 기록하기 전에 시스템 오류 등에 의해 종료된다면?

해당 트랜잭션은 실패로 돌아가고 롤백(rollback) 된다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글