트랜잭션 로깅 작동 방법
다음은 관리자와 직원 관점에서 본 트랜잭션 로깅의 일반적인 예제입니다.
관리자는 서버의 모든 데이터베이스에 대해 트랜잭션 로깅을 사용합니다. 관리자는 보관 로그 유형을 선택하여 트랜잭션 로그 공간을 충분히 확보하고, 안전하고 신속한 트랜잭션 로그 저장을 위해 별도로 미러링된 장치를 사용하며, 백업 유틸리티를 설치하여 매체 오류 및 오류로 인한 손상된 데이터베이스를 복구합니다.
관리자는 트랜잭션 로그를 매일 백업합니다. 관리자는 서버의 모든 데이터베이스에 대해 전체 백업을 수행하지 않고 변경사항만 백업하므로 백업 시간이 오래 걸리지 않습니다.
서버가 중단되면 이 기능도 중지되지만 오랫동안은 아닙니다. 관리자가 서버를 다시 시작하면 트랜잭션 로그의 모든 변경사항이 데이터베이스에 다시 적용됩니다. 서버는 곧 정상적으로 작동합니다.
며칠 후 매체 오류가 발생합니다. 관리자는 가장 최근의 주별 백업에서 손상된 데이터베이스를 복구한 후 변경사항을 재생합니다.
데이터베이스를 사용하는 직원은 업무 수행 방법에서 달라진 점을 인식하지 못합니다. 그러나 서버가 활성화된 후 실행 횟수가 많아지고 정지 시간이 줄었다는 사실은 알 수 있습니다.
데이터베이스 변경 방법
트랜잭션 로깅은 모든 데이터베이스 트랜잭션을 디스크에 추가하기 위해 대기시키지 않고 로그 파일에 추가합니다. 로그 파일에 추가되어야 성공적으로 변경한 것으로 간주합니다. 물리적인 쓰기 프로세스는 서버의 사용량이 많지 않을 때까지 대기하거나 주기적으로 발생할 수 있습니다. 변경사항은 디스크에 일괄적으로 기록됩니다.
데이터베이스가 열려 있는 동안 메모리에 캐시됩니다. 데이터베이스는 데이터베이스의 메모리 사본에 기록됩니다. 기록된 내용은 즉시 트랜잭션 로그로 발송됩니다. 나중에 데이터베이스의 메모리에 캐시된 버전은 디스크에 추가되고, 데이터베이스는 업데이트됩니다. 트랜잭션 로그는 순서대로 진행되므로 검색 시간이 필요 없고 작업을 재시작하거나 필요한 경우 실행 취소하기에 충분한 정보만 로그에 기록하면 됩니다. 기록된 정보의 양이 데이터베이스가 디스크에 기록한 정보보다 적은 경우가 많습니다.
데이터베이스가 완전히 디스크에 기록되지 않은 상태에서 데이터베이스를 열 경우, 메모리에 캐시된 버전이 열립니다. 디스크의 버전이 변경사항으로 업데이트되기 전에 서버에 오류가 발생하는 경우, 서버를 재시작하면 재시작 중에 로그가 데이터베이스에 적용됩니다.