트랜잭션 로깅 작동 방식
다음은 관리자와 직원의 관점에서 본 트랜잭션 로깅의 일반적인 예입니다.
관리자는 서버의 모든 데이터베이스에 대한 트랜잭션 로깅을 활성화합니다. 관리자는 트랜잭션 로그를 위한 충분한 공간을 확보하기 위해 보관된 로깅 스타일을 선택하고, 트랜잭션 로그를 안전하고 빠르게 저장하기 위해 별도의 미러링된 장치를 사용하며, 미디어 오류와 그로 인해 손상된 데이터베이스를 복구하기 위한 백업 유틸리티를 설치합니다.
관리자는 매일 거래 로그를 백업합니다. 관리자가 서버의 모든 데이터베이스를 전체 백업하는 대신, 변경 사항만 백업하므로 이 절차는 오래 걸리지 않습니다.
서버가 다운되면 다운되지만 오래 지속되지는 않습니다. 관리자가 서버를 다시 시작하면 트랜잭션 로그의 모든 변경 사항이 데이터베이스에 재생됩니다. 서버가 곧 다시 작동할 예정입니다.
며칠 후에 미디어 장애가 발생합니다. 관리자는 가장 최근의 주간 백업에서 손상된 데이터베이스를 복원하고 변경 사항을 재생합니다.
데이터베이스를 사용하는 직원은 자신의 업무 수행 방식에 어떤 차이도 느끼지 못합니다. 하지만 서버가 더 자주 가동되고 다운타임이 줄어든 것을 눈치챌 수도 있습니다.
How changes are made to the database
트랜잭션 로깅은 트랜잭션이 디스크에 커밋될 때까지 기다리지 않고 모든 데이터베이스 트랜잭션을 로그 파일에 게시합니다. 변경 사항이 로그 파일에 게시되면 성공한 것으로 간주됩니다. 물리적 쓰기 프로세스는 서버의 업무량이 줄어들 때까지 기다리거나 주기적으로 발생할 수 있습니다. 변경 사항은 일괄적으로 디스크에 기록됩니다.
데이터베이스는 열려 있는 동안 메모리에 캐시됩니다. 데이터베이스에 대한 쓰기는 데이터베이스의 메모리 내 복사본에서 발생합니다. 그런 다음 즉시 거래 로그로 전송됩니다. 나중에, 메모리에 캐시된 버전의 데이터베이스가 디스크에 게시되어 데이터베이스를 업데이트합니다. 트랜잭션 로그는 순차적이므로 검색 시간이 없고, 작업을 다시 실행하거나 필요한 경우 실행을 취소하는 데 필요한 정보만 로그에 기록됩니다. 많은 경우, 이는 디스크에 데이터베이스를 쓰는 것보다 정보가 적습니다.
데이터베이스가 아직 디스크에 완전히 기록되지 않은 상태에서 이를 열면, 메모리에 캐시된 버전을 여는 것입니다. 디스크에 있는 버전이 변경 사항으로 업데이트되기 전에 서버가 충돌하는 경우, 서버를 다시 시작하면 로그가 다시 시작되는 동안 데이터베이스에 적용됩니다.