1] 트랜잭션
1. 트랜잭션의 정의
- 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 일련의 연산집합으로서의 작업 단위
- DBMS에서 회복 및 병행 수행 시 처리되는 작업의 논리적 단위
* COMMIT & ROLLBACK
- COMMIT : 트랜잭션이 정상적으로 종료될 경우 수행
- 내용을 변경한 트랜잭션이 완료되면 그 트랜잭션에 의해 데이터베이스는 새롭게 일관된 상태로 변경
-> 이 상태는 시스템에 오류가 발생하더라도 취소되지 않음
- ROLLBACK : 트랜잭션이 비정상적으로 종료될 경우 수행
해당 트랜잭션은 받았던 자원과 잠금을 모두 반환, 재시작되든지 폐기됨
2. 트랜잭션의 특성
- 데이터 무결성 보장!
1) 원자성 : 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함
- 명령어는 반드시 완벽히 수행되며, 어느 하나라도 오류 발생하면 그 트랜잭션은 모두 취소
2) 일관성 : 트랜잭션 수행이 성공적으로 완료되면 언제나 일관성 있는 데이터베이스 상태로 변환
- 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 수행 완료 후의 상태가 같아야 함
- 동시에 실행되는 트랜잭션이 없는 고립 상태에서의 트랜잭션 수행은 데이터베이스 일관성을 유지해야 함
3) 독립성 : 한 트랜잭션이 데이터를 갱신하는 동안 이 트랜잭션이 완료되기 전에는 갱신중인 데이터를 다른 트랜잭션들이 접근하지 못하도록 해야 함
- 여러 트랜잭션들이 동시에 수행되어도 그 결과는 순차적으로 실행된 결과와 같아야 함
- 여러 트랜잭션들이 동시에 실행되더라도 DBMS는 트랜잭션이 서로 실행과 완료가 순차적으로 되도록 보장해야 함
4) 영속성 : 트랜잭션 실행이 성공적으로 완료된 후에는 시스템에 오류가 발생하더라도 트랜잭션에 의해 변경된 내용은 계속 보존되어야 함
- 성공적으로 완료된 트랜잭션의 결과는 영구적으로 반영되어야 함
2] 회복
1. 장애의 유형
- 실행 장애 : 사용자의 실수, 무결성 규정 위반 등으로 실의 실행이 실패하는 현상
- 트랜잭션 장애 : 트랜잭션 내부에서 입력 데이터 오류, 불명확한 데이터. 시스템 자원 요구의 과다 등 비정상적인 상황으로 인하여 트랜잭션 실행이 중지되는 현상
- 시스템 장애 : 하드웨어 오동작, 정전, 소프트웨어 오류. 교착상태 등에 의해 실행중인 모든 트랜잭션들이 실행 계속 할 수 없는 현상
- 미디어 장애 : 저장 장치인 디스크 블록의 손상이나 디스크 헤드 충돌 등에 의해 데이터베이스 일부 또는 전부가 물리적으로 손상되는 현상
2. 회복기법
1) 연기 갱신 기법
- 트랜잭션이 성공적으로 종료될 때까지 데이터베이스에 대한 실질적인 갱신을 연기
- 트랜잭션이 실행되는 동안 변경된 내용은 로그에 보관됨
회복작업 수행할 경우. redo 작업만 수행
2) 즉각 갱신 기법
- 트랜잭션이 데이터를 변경하면 트랜잭션이 부분 완료되기 전이라도 즉시 실제 데이터베이스에 반영하는 기법
- 변경된 모든 내용들은 로그에 보관
- 회복 작업 수행할 경우 redo undo 모두 수행
3) 그림자페이지 기법
- 갱신 이전의 데이터베이스를 일정 크기의 페이지 단위로 구성하여 각 페이지마다 복사본인 그림자 페이지로 별도 보관해두고 실제 페이지를 대상으로
트랜잭션에 대한 변경작읍을 수행하는 것
- rollback 시 그림자 페이지를 변경된 이후의 실제 페이지 부분에 대체하여 회복
4) 검사점 기법
- redo와 undo 수행하기 위해 로그 전체를 조사해야 하는 경우를 피하기 위한 기법
- 주기적으로 검사점을 로그에 보관
- 로그 내에서 가장 최근의 검사점으로부터 회복 작업을 수행 -> 회복시간 단축
5) 미디어 회복 기법
- 데이터베이스 내용을 주기적으로 안전한 저장 장치에 덤프해 둠
3. 회복관리기
- 로그. 메모리덤프 등을 이용하여 회복기능 수행하는 DBMS의 핵심 구성요소.
- undo : 취소 / redo : 재작업