[DB] 트랜잭션

수민·2024년 2월 7일
0

데이터베이스

목록 보기
1/4
post-thumbnail

트랜잭션

🌹 개념

DB의 상태를 변화시키기 위해 수행하는 작업의 단위
하나의 작업을 안전하게 처리할 수 있도록 보장해줍니다.

🌹 특징 (ACID)

트랜잭션은 대표적으로 4가지 특징을 가집니다.

원자성 (Atomicity)

트랜잭션 내에서 실행한 작업은 하나의 작업인 것처럼, 모두 성공하거나 실패해야 합니다.

일관성 (Consistency)

모든 트랜잭션은 일관성있는 DB 상태를 유지해야 합니다.

독립성 (Isolation)

동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 (동시에 같은 데이터를 수정하지 않도록) 해야 합니다.

지속성 (Durability)

트랜잭션을 성공적으로 끝내면 그 결과는 항상 기록되어야 합니다.
중간에 시스템에 문제가 생기더라도 DB 로그 등을 사용해서 성공한 트랜잭션의 내용을 복구해야 합니다.

🌹 Commit/Rollback 연산

트랜잭션이 종료되면, Commit 또는 Rollback 연산을 합니다.

Commit 연산

트랜잭션이 정상적으로 성공한 경우, DB에 정상적으로 반영함을 알리는 연산입니다.
Commit을 호출하기 전까지는 임시 저장합니다.

임시 저장

트랜잭션을 시작한 사용자에게만 수정 사항이 보이고,
다른 세션(사용자)에게는 변경된 데이터가 적용되지 않는다.

Commit한 뒤에는 수행된 트랜잭션이 Log에 저장되며,
수행했던 트랜잭션의 단위로 Rollback연산을 할 수 있도록 합니다.

Rollback 연산

하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진 경우, 트랜잭션을 되돌리기위해 사용하는 연산입니다.

트랜잭션을 처음부터 다시 시작하거나, 부분적으로만 연산된 결과를 취소시킵니다.

이후에, 처리된 트랜잭션의 단위로 Rollback을 할 수 있습니다.

profile
우하하

0개의 댓글