부트캠프/백엔드 스터디

[DB] 트랜잭션, ACID

상똥 2024. 1. 29. 20:02

[1. 트랜잭션]

1. 트랜잭션 (Transaction)

- 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위

- 여러 개의 쿼리를 하나로 묶는 작업을 뜻함 (데이터베이스에 접근하는 방식이 쿼리이므로)

 

2. 트랜잭션의 특징

- 원자성, 일관성, 독립성, 지속성

- 특징을 한 번에 ACID라고 부름

- 하나의 트랜잭션은 커밋(commit, 저장)되거나 롤백(rolll-back, 철회)될 수 있음

 

3. 커밋과 롤백

- 커밋 : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어, 트랜잭션 단위로 수행되며 영구적으로 저장됨

- 롤백 : 트랜잭션으로 처리한 하나의 과정을 발생 전으로 돌리는 것, 즉 취소

- 커밋과 롤백으로 데이터의 무결성을 지킬 수 있음

더보기

무결성 : 데이터의 정확성, 일관성, 유효성을 유지하는 것으로 데이터베이스에 저장된 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰를 가지게 함

개체 무결성 기본키로 선택된 필드는 NULL값을 허용하지 않음
참조 무결성 서로 참조 관계에 있는 두 테이블의 항상 일관된 값을 유지해야 함
고유 무결성 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우 그 속성 값은 모두 고유한 값을 가짐
NULL 무결성 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우 그 속성 값은 NULL이 될 수 없다는 제약 조건

 

[2. ACID]

ACID = 트랜잭션의 특징을 부르는 말

 

1. 원자성 (Atomicity)

- 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징

- 트랜잭션을 커밋한 후 문제가 생겨 롤백할 때, 그 트랜잭션과 관련된 모든 일이 수행되지 않음을 뜻하는 것

 

2. 일관성 (Consistency)

- 허용된 방식으로만 데이터를 변경해야하는 것

- 데이터베이스에 기록된 모든 데이터는 여러가지 조건, 규칙에 따라 유효함을 가져야 한다는 것을 의미

 

3. 격리성 (Isolation)

- 트랜잭션 수행 시 서로 끼어들지 못하는 것

- 서로 격리되어 순차적으로 실행되는 것처럼 작동되어야 하고 여러 사용자가 같은 데이터베이스에 접근할 수 있어야 함

- 그냥 순차적이기만 하면 성능이 안좋으므로, 여러 개의 격리 수준으로 나눔

 

4. 지속성 (Durability)

- 성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다는 것

- 데이터베이스 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함을 뜻함

- 이를 위해 체크섬, 저널링, 롤백 등의 기능 제공

더보기

- 체크섬 : 중복 검사의 한 형태, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법

- 저널링 : 파일 시스템 또는 데이터베이스 시스템에 변경 사항을 반영하기 전에 로깅하는 것, 트랜잭션 등 변경사항에 대한 로그를 남기는 것