반응형
1. UNDO
UNDO는 데이터베이스에서 트랜잭션을 취소하거나 되돌리는 데 사용되는 메커니즘이다. 트랜잭션이 진행되면서 이루어진 변경 사항을 기록하여, 트랜잭션을 종료하거나 오류가 발생했을 때 이전 상태로 되돌릴 수 있게 한다.
- 목적: 트랜잭션이 실패하거나 롤백되었을 때, 데이터의 일관성을 유지하기 위해 변경된 데이터를 원래 상태로 복원하는 것이다.
- 동작: 트랜잭션이 실행되면, 그 변경 사항은 UNDO 로그로 기록된다. 만약 트랜잭션이 커밋되거나 오류로 롤백되면 UNDO 로그를 사용하여 이전 상태로 복원된다.
- 예시: 만약 사용자가 UPDATE 쿼리를 실행했지만, 이후에 트랜잭션을 롤백하면, UNDO 로그가 이를 되돌린다.
UNDO의 주요 기능
- 롤백(Rollback): 트랜잭션이 완료되지 않거나 취소되었을 때 변경된 데이터를 원래 상태로 되돌린다.
- 트랜잭션 격리: 다른 트랜잭션이 COMMIT하기 전에 다른 트랜잭션이 변경한 데이터를 볼 수 없게 한다.
2. REDO
REDO는 데이터베이스에서 트랜잭션이 완료되었을 때, 해당 트랜잭션의 변경 사항을 다시 적용하는 데 사용되는 메커니즘이다. REDO는 시스템 장애가 발생했을 때 데이터베이스를 복구하는 데 중요한 역할을 한다.
- 목적: 시스템 장애 후 데이터베이스를 복구할 때, COMMIT된 트랜잭션의 변경 사항을 다시 적용하여 데이터베이스 상태를 복원한다.
- 동작: 트랜잭션이 COMMIT되면, 변경 사항은 REDO 로그에 기록된다. 시스템이 비정상적으로 종료되었을 때, REDO 로그를 사용하여 트랜잭션의 변경 사항을 복구한다.
- 예시: 만약 트랜잭션이 COMMIT되었지만 시스템 장애로 인해 트랜잭션이 완전히 기록되지 않았다면, REDO 로그를 통해 해당 변경 사항을 복구할 수 있다.
REDO의 주요 기능
- 복구(Recovery): 시스템 장애나 충돌이 발생했을 때, REDO 로그를 사용하여 COMMIT된 트랜잭션을 복구한다.
- 트랜잭션 영속성: 트랜잭션이 성공적으로 커밋되면, REDO 로그를 통해 트랜잭션의 변경 사항을 다시 적용하여 데이터베이스의 일관성을 유지한다.
UNDO와 REDO의 관계
- UNDO는 트랜잭션을 취소할 때 사용되고, REDO는 시스템이 장애를 겪은 후 변경 사항을 복구할 때 사용된다.
- 트랜잭션의 변경 사항은 UNDO 로그와 REDO 로그에 동시에 기록된다. 트랜잭션이 롤백되면 UNDO 로그가 사용되고, 트랜잭션이 커밋되면 REDO 로그가 사용된다.
- 두 로그는 데이터베이스의 안정성과 일관성을 보장하는 데 중요한 역할을 한다. 예를 들어, 시스템이 다운되었을 때 REDO 로그를 사용하여 커밋된 트랜잭션을 복구하고, UNDO 로그를 사용하여 롤백된 트랜잭션의 변경 사항을 취소할 수 있다.
운영 측면에서의 활용
- 로그 관리: UNDO와 REDO 로그는 데이터베이스의 성능과 복구 전략에 매우 중요한 역할을 한다. 예를 들어, UNDO와 REDO 로그가 너무 커지면 시스템 성능에 영향을 줄 수 있기 때문에, 로그 파일을 주기적으로 관리하고 적절한 크기로 설정해야 한다.
- 백업 및 복구: 장애 복구 시, REDO 로그는 데이터베이스를 마지막 커밋된 상태로 복구하는 데 사용되며, UNDO 로그는 롤백이 필요한 트랜잭션을 되돌리는 데 사용된다.
결론
- UNDO는 트랜잭션을 롤백하여 이전 상태로 되돌리기 위해 사용된다.
- REDO는 시스템 장애 후 트랜잭션의 커밋된 변경 사항을 복구하기 위해 사용된다.
- 두 메커니즘은 데이터베이스의 안정성과 복구를 보장하는 중요한 역할을 한다.
반응형
'DB' 카테고리의 다른 글
[Database] PGA, SGA 란? (1) | 2025.03.19 |
---|---|
[Database] shared memory 란? (1) | 2025.03.19 |
[Database] SYSDBA 란? (0) | 2025.03.19 |
[Database] Oracle, MySQL, PostgreSQL 암호화 사용 여부 확인 (0) | 2025.03.19 |
[Database] ROWNUM 이란? (0) | 2025.03.19 |