본문 바로가기

여러 작업을 하나처럼 다루다 | 정보처리의 흐름 FLOW 03 | K-BOOKS

FLOW 03 · INFORMATION PROCESSING
DIRECTION 03 · 연결된 세계를 걷다 · DB · SQL · 트랜잭션

여러 작업을 하나처럼 다루다

DB · SQL · 트랜잭션

QUESTION · 질문에서 시작합니다

사용자가 결제를 완료하면 예약 저장과 결제 기록 저장이 함께 성공해야 한다.

그런데 결제 기록은 저장됐는데 예약 저장만 실패하면 어떻게 될까?

“둘 다 성공하거나, 둘 다 없던 일로 만들 수는 없을까?”

작업 묶음에도 완성 조건이 있다

기술 이름 논리적으로 하나의 작업으로 처리되어야 하는 데이터베이스 연산의 묶음을 트랜잭션(Transaction)이라고 한다.

결제와 예약처럼 서로 떨어뜨리면 안 되는 작업을 하나의 단위로 본다.

결제 승인
↓
예약 저장
↓
둘 다 성공 → 확정
중간 실패 → 전체 취소

트랜잭션을 지키는 네 가지 약속

Atomicity전부 수행되거나 전부 취소되어야 한다.
Consistency작업 전후 데이터 규칙이 유지되어야 한다.
Isolation동시에 실행되는 작업이 서로 방해하지 않아야 한다.
Durability완료된 결과는 장애가 나도 유지되어야 한다.
기술 이름 이 네 특성을 앞 글자를 따서 ACID라고 부른다.

ACID는 네 단어를 따로 외우기보다 하나의 실패 장면에 연결해 보는 편이 좋다. 결제가 중간에 멈추면 원자성, 잘못된 잔액이 남으면 일관성, 동시에 처리한 주문이 서로 섞이면 격리성, 완료한 결과가 장애 뒤 사라지면 영속성 문제다.

확정할 것인가, 되돌릴 것인가

모든 작업이 성공했다면 변경 내용을 최종적으로 저장해야 한다.

COMMIT;

반대로 중간에 문제가 발생했다면 작업 전 상태로 되돌릴 수 있어야 한다.

ROLLBACK;
더 찾아보고 싶다면846면 학습 아카이브에서 검색하세요.
K-BOOKS Q&A이 내용이 헷갈리나요?

공부하던 페이지를 자동으로 연결해 질문할 수 있습니다.

RELATED STUDY MATERIALS

이 개념과 이어서 볼 정보처리 자료

학습자료실 65개 →

CONTINUE · INFORMATION PROCESSING ENGINEERDB에서 시험 학습으로 이어가기
이야기형 개념 설명은 그대로 두고, 필요한 시험 요약·문제·실습으로 연결합니다.