개념
- 작업 하나를 수행하는 데 필요한 DB 연산의 논리적 작업 단위
데이터베이스 세션
트랜잭션의 특성 ACID
- Atomicity 원자성
- Consistency 일관성
- Isolation 격리성
- Durability 지속성
ACID는 회복, 병행 제어, 병행 제어, 회복 기능으로 보장한다
1. 원자성 Atomicity
- all-or-nothing
- 트랜잭션을 구성하는 모든 연산들이 모두 정상적으로 실행 or 하나라도 실행x
-
장애가 발생해도 트랜잭션 전의 상태로 복구
-
회복 기능이 원자성을 보장
2. 일관성 Consistency
3. 격리성 Isolation
4. 지속성 Durability
트랜잭션 격리 수준
- 여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있도록 허용할지 말지 결정하는 것
격리 수준은 크게 4가지로 나뉜다 (아래로 갈수록 트랜잭션 간 데이터 격리 정도 증가)
- READ UNCOMMITED
- READ COMMITED
- REPEATABLE READ
- SERIALIZABLE
트랜잭션 연산
-
commit
- 트랜잭션이 성공적으로 수행됨을 선언 (작업 완료)
- 트랜잭션의 모든 연산이 정상 처리 → commit → DB에 반영 → 일관성 유지
autocommit
: 자동으로 명령이 commit하여 즉시 반영
-
rollback
- 트랜잭션이 실패했음을 선언 (작업 취소)
- 트랜잭션 수행 실패 → rollback → 작업 취소 → 트랜잭션 수행 전으로 회복
트랜잭션 상태

- 활동 상태
- 부분 완료 상태
- 완료 상태
- 실패 상태
- 철회 상태
- 트랜잭션 시작 → 활동 상태 → 트랜잭션 마지막 연산 처리 → 부분 완료 상태 (DB에 반영 이전)
- 부분 완료 트랜잭션 → commit → 완료 -> DB 반영 -> 종료
- 부분 완료 트랜잭션 → rollback → 철회 -> 트랜잭션 수행 전으로 -> 종료
트랜잭션 장애와 회복
장애의 유형
- 트랜잭션 장애
- 트랜잭션 수행 중 오류 발생 → 수행 지속 불가
- 트랜잭션 논리적 오류, 잘못된 데이터 입력, 시스템 자원 과다 사용 요구, 처리 대상 데이터 부재 등
- 시스템 장애
- HW 결함 → 수행 지속 불가
- HW 이상으로 메인 메모리의 DB 일부 혹은 전체 손상
- 미디어 장애
- 디스크 장치 결함 → DB 일부 혹은 전체 손상
- 디스크 헤드 손상
회복 연산
데이터를 미리 복사해두고, 장애가 발생하면 복사본을 이용해 원래 상태로 복원
-
dump
DB 전체를 주기적으로 복사
-
log
DB 변경 연산 실행 시 데이터 변경 이전 값과 이후 값을 파일에 기록
dump와 log로 저장된 데이터로 DB를 복구하는 명령어
-
redo
재실행, 가장 최근에 저장한 DB 복사본을 가져와 모든 변경 연산을 재실행하여 복구
-
undo
취소, 로그를 이용해 모든 변경 연산을 취소하여 복구
회복 기법
- DB 장애 발생 전의 모순이 없고 일관된 상태로 복구
- DBMS의 회복 관리자가 장애 탐지 → DB 복구
- 로그 회복 기법
- 검사 시점 회복 기법
- 로그 회복 기법의 비효율성 보완
- 가장 최근 체크포인트를 만들어두고, 장애 발생 시 가장 최근 검사 시점 이전의 트랜잭션에는 회복 작업 수행x
- 불필요한 회복 작업 x, 시간 단축
- 미디어 회복 기법
- DB는 비휘발성인 디스크에 저장됨, 하지만 디스크 헤더 고장으로 장애 발생 가능
- 디스크 장애 발생 시 일정 주기마다 복사해둔 덤프를 이용하여 복구
- 전체 DB를 복사 → 큰 비용, cpu 낭비
출처: 데이터베이스 개론, Real MySQL 8.0 (1권)
이미지 출처: gracefulsoul