The Office Lover
Commit과 Rollback 본문
소개
RDBMS에서 중요한 두 가지 개념인 Commit과 Rollback에 대해 쉽게 이해할 수 있도록 설명드리겠습니다. 앞서 RDBMS의 개념을 먼저 보고 오시면 더 쉽게 이해가 되실 수 있으니 참고 바랍니다.
2023.07.24 - [DataBase] - PostgreSQL - RDBMS
Commit이란?
Commit은 데이터베이스에 변경된 내용을 영구적으로 저장하는 작업을 의미합니다. 데이터를 추가하거나 수정하거나 삭제한 후에, 그 변경 사항들을 확정짓는 작업입니다.
Rollback이란?
Rollback은 이미 수행한 변경 작업을 취소하는 작업입니다. 어떤 이유로 인해 작업이 실패하거나 잘못된 결과가 나왔을 때, 이전 상태로 되돌리는 역할을 합니다.
Commit과 Rollback의 사용 방법
일반적으로 RDBMS에서는 트랜잭션(Transaction)이라는 개념을 사용하여 Commit과 Rollback을 관리합니다. 트랜잭션은 데이터베이스 작업을 하나로 묶은 것을 의미합니다. 모든 작업이 정상적으로 처리되면 Commit을 실행하여 변경사항을 반영하는 개념이고, 작업 중 오류가 발생하거나 취소해야 할 경우 Rollback을 실행합니다.
예시를 통한 이해하기
[Commit]
고객 A와 고객 B가 각각 은행 계좌를 가지고 있습니다. 잔고는 다음과 같습니다.
고객명 | 계좌번호 | 잔고 |
고객 A | 1001 | 100,000 |
고객 B | 1002 | 50,000 |
이때, 고객 A가 고객 B에게 20,000원을 이체하려고 합니다.
고객 A의 이체 작업은 하나의 트랜잭션으로 시작됩니다.
- 트랜잭션 시작
- 출금 : 1001계좌의 잔고에서 20,000원 차감
- 1001 계좌 잔고 = 80,000원
- 입금 : 1002계좌의 잔고에서 20,000원 증가
- 1002 계좌 잔고 = 70,000원
- 트랜잭션 종료
- Commit;
[Rollback]
이번에는 고객 C가 은행 계좌를 새로 개설했습니다.
고객명 | 계좌번호 | 잔고 |
고객 C | 1003 | 50,000 |
하지만, 실수로 5,000원을 입금한다는 걸 50,000원을 잘못 입금했습니다.
고객 C의 이체 작업은 하나의 트랜잭션으로 시작됩니다.
- 트랜잭션 시작
- 입금 : 1003계좌의 잔고에서 50,000원 증가
- 1003 계좌 잔고 = 50,000원
- Rollback; - (입금 작업에 문제가 있어 트랜잭션 롤백)
- 1003 계좌 잔고 = 0원
Rollback은 언제 실행될까?
Rollback은 트랜잭션 상태와 실행 결과에 따라 다양한 시점에서 실행될 수 있습니다.
트랜잭션 내에서의 Rollback
트랜잭션 실행 도중에 문제가 발생하여 중단해야 할 경우 Rollback이 발생합니다. 트랜잭션 내에서 Rollback이 실행되면, 트랜잭션 이전 상태로 되돌아가고 해당 트랜잭션에 속한 모든 변경 사항이 취소됩니다. 이후에 Commit을 하지 않고 트랜잭션을 종료하면 변경사항이 영구적으로 적용되지 않습니다.
- 고객 A가 10,000원을 인출하는 작업을 하는 트랜잭션에서 중간에 오류가 발생하면 트랜잭션을 중단하고
Rollback을 실행하여 이전 상태로 돌아감
트랜잭션 종료 이후의 Rollback
트랜잭션이 정상적으로 종료되었지만, 나중에 해당 트랜잭션에 오류가 발견되었거나 잘못된 결과가 확인된 경우에 Rollback을 실행하여 이전 상태로 데이터베이스를 되돌릴 수 있습니다. 이때, Rollback은 이전에 Commit을 실행한 시점 이후의 변경 사항까지만 취소합니다.
- 고객 A가 인터넷 개인정보 수정에서 자신의 주소 변경을 완료하였으나, 나중에 해당 주소가 잘못 입력되었다는 사실을 확인하고 이전 주소로 Rollback을 실행하여 데이터를 수정함
마무리
이를 통해 데이터 베이스의 무결성을 유지하고 문제가 발생한 경우에도 데이터를 복구할 수 있습니다.
'DataBase' 카테고리의 다른 글
PostgreSQL Joins (0) | 2023.07.31 |
---|---|
PostgreSQL - RDBMS (0) | 2023.07.24 |