티스토리 뷰
안녕하세요 박스여우입니다. 이번에는 DataBase의 트랜잭션 회복기법에 대해 알아보도록 하겠습니다.
■ UNDO & REDO
UNDO : 만약 해당 트랜잭션이 어떤 이유든 정상적으로 종료될 수 없게 되면. 즉, 데이터베이스의 내용 자체는 손상되지 않았지만 변경 중이거나 변경된 내용에 대한 신뢰성을 잃어버린 경우에 트랜잭션이 변경한 페이지들은 원상 복구되어야 합니다. 이러한 복구를 UNDO라고 하며 로그를 이용하여 모든 변경을 취소시키는 방법입니다. 이를 통해 트랜잭션의 원자성을 제공합니다.
REDO : 데이터베이스 내용 자체가 손상이 된 경우에 가장 최근의 복제본을 적재시킨 뒤 복제본 이후에 일어난 변경만을 로그를 이용하여 재실행함으로써 데이터베이스를 복원하는 것을 Redo라고 하며 이를 통해 트랜잭션의 영속성을 제공합니다.
■ 지연갱신 회복 기법 vs 즉시갱신 회복 기법
지연갱신 회복 기법 : 지연갱신 기법은 트랜잭션이 부분 완료 상태에 이르기까지 발생한 모든 변경내용을 로그 파일에만 저장하고 데이터베이스에는 커밋이 발생할 때까지 저장을 지연하는 기법입니다. 회복 과정에서 UNDO가 필요 없다는 점이 특징이며 이를 통해 트랜잭션의 원자성을 보장할 수 있습니다.
즉시갱신 회복 기법 : 트랜잭션 수행 도중 데이터를 변경하면 변경 정보를 로그 파일에 저장하고, 트랜잭션이 부분 완료되기 전이라도 모든 변경 내용을 즉시 데이터베이스에 반영하는 기법입니다. 트랜잭션 완료 이전에 수행한 갱신 연산은 미완료 갱신 이라 하며 회복 시 로그 파일을 참조하여 REDO와 UNDO 연산을 모두 실행해야 합니다.
■ 그 외의 회복기법..
Checkpoint 회복기법 : Checkpoint 회복기법은 이전은 신경쓰지 않고 Checkpoint 이후만 즉시 갱신 또는 지연갱신을 수행합니다. 즉, 가장 최근 checkpoint 지점을 찾아 그 시점 이후의 로그만을 회복 대상으로 합니다. 회복 시 로그 파일의 정보를 모두 검사해야 하고, 이미 반영된 변경에 대해서 불필요한 REDO 연산을 수행해야 하는 로그 기반 회복 기법의 문제점을 해결할 수 있습니다.
그림자 페이징(Shadow Paging) 회복 기법 : 그림자 페이징 회복기법은 트랜잭션이 실행되는 동안 현재 페이지 테이블과 그림자 페이지 테이블 2개의 페이지 테이블을 유지하고 관리하는 회복 기법입니다. 데이터베이스를 일정 크기의 블록인 페이지 단위로 유지하고, 로그를 기록하지 않습니다. 그림자 페이징 회복 기법의 장점은 로그 레코드를 유지할 필요가 없으며 장애 이후 회복 처리가 불필요 합니다.
미디어 회복 기법 : 디스크와 같이 비휘발성 저장 장치의 내용이 손상되는 장애가 발생했을 시에 회복을 위한 기법이며 백업, 미러링, RAID등을 이용해 복구할 수 있습니다. 데이터베이스의 전체 내용을 안전한 저장소에 복사(덤프)하기 때문에 대량의 데이터 전송이 필요하며 데이터 전송 동중 트랜잭션 중지로 CPU의 낭비가 발생할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
웹사이트 스크래핑 라이브러리 Puppeteer 소개 (390) | 2019.08.15 |
---|---|
rxjs map operator 총 정리 (5384) | 2019.08.13 |
Ubuntu 에서 NodeJS 설치 및 HTTP 서버 구동 (416) | 2017.02.10 |
패키징 구조의 장단점 (403) | 2017.02.09 |
프로토콜과 OSI 7계층 (0) | 2016.09.23 |