트랜잭션 로그 개요

각 SQL Server 2005 데이터베이스에는 각 트랜잭션에 의해 적용된 모든 트랜잭션 및 데이터베이스 수정 내용을 기록하는 트랜잭션 로그가 있습니다. 트랜잭션 로그는 데이터베이스의 주요 구성 요소이며 시스템 오류가 발생할 경우 데이터베이스를 다시 일관된 상태로 만들려면 트랜잭션 로그가 필요할 수 있습니다. 트랜잭션 로그를 삭제하거나 이동할 경우의 결과를 완전히 이해하고 있는 경우를 제외하고는 트랜잭션 로그를 절대 삭제하거나 이동해서는 안 됩니다.

트랜잭션 로그가 지원하는 작업

트랜잭션 로그는 다음 작업을 지원합니다.

  • 개별 트랜잭션 복구

  • SQL Server가 시작될 때 불완전한 모든 트랜잭션 복구

  • 복원된 데이터베이스, 파일, 파일 그룹 또는 페이지를 오류 지점으로 롤포워드

  • 트랜잭션 복제 지원

  • 대기 서버 솔루션 지원

개별 트랜잭션 복구

응용 프로그램이 ROLLBACK 문을 실행하거나 데이터베이스 엔진이 클라이언트와의 통신이 끊어진 때와 같은 오류를 검색할 경우 불완전한 트랜잭션에 의해 수정된 내용을 롤백하는 데 이 로그 레코드가 사용됩니다.

SQL Server 시작 시 모든 불완전한 트랜잭션 복구

SQL Server가 실행 중인 서버에 장애가 발생하면 데이터베이스에서 일부 수정 내용이 버퍼 캐시에서 데이터 파일로 옮겨지지 않을 수 있으며 데이터 파일에 불완전한 트랜잭션으로 인한 일부 수정 내용이 그대로 남아 있을 수 있습니다. SQL Server의 인스턴스가 시작되면 이 인스턴스는 각 데이터베이스의 복구를 실행합니다. 데이터 파일에 쓰여지지 않은 로그에 기록된 모든 수정 내용은 롤포워드됩니다. 그런 다음 트랜잭션 로그에서 발견된 모든 불완전한 트랜잭션이 롤백되어 데이터베이스의 무결성이 보존됩니다.

복원된 데이터베이스, 파일, 파일 그룹 또는 페이지를 오류 발생 지점으로 롤포워드

데이터베이스 파일에 영향을 주는 하드웨어 손실이나 디스크 오류가 발생한 후 데이터베이스를 오류 발생 지점으로 복원할 수 있습니다. 먼저 마지막 전체 데이터베이스 백업과 마지막 차등 데이터베이스 백업을 복원한 후 트랜잭션 로그 백업의 이후 시퀀스를 오류 지점까지 복원합니다. 각 로그 백업을 복원할 때 데이터베이스 엔진은 로그에 기록된 모든 수정 내용을 다시 적용하여 모든 트랜잭션을 롤포워드합니다. 마지막 로그 백업이 복원되면 데이터베이스 엔진은 로그 정보를 사용하여 해당 지점에서 완료되지 않은 모든 트랜잭션을 롤백합니다.

트랜잭션 복제 지원

로그 판독기 에이전트는 트랜잭션 복제를 위해 구성한 각 데이터베이스의 트랜잭션 로그를 모니터링하고 복제 표시된 트랜잭션을 트랜잭션 로그에서 배포 데이터베이스로 복사합니다. 자세한 내용은 트랜잭션 복제 작동 방법을 참조하십시오.

대기 서버 솔루션 지원

대기 서버 솔루션, 데이터베이스 미러링 및 로그 전달은 트랜잭션 로그를 많이 사용합니다. 로그 전달 시나리오에서는 주 서버가 주 데이터베이스의 활성 트랜잭션 로그를 하나 이상의 대상으로 보냅니다. 각 보조 서버는 이 로그를 로컬 보조 데이터베이스로 복원합니다. 자세한 내용은 로그 전달 개요를 참조하십시오.

데이터베이스 미러링 시나리오에서는 주 데이터베이스에 대한 모든 업데이트 내용이 미러 데이터베이스인 데이터베이스의 전체 복사본에 즉시 재생성됩니다. 주 서버 인스턴스에서 로그 레코드를 미러 서버 인스턴스로 즉시 보내면 미러 서버 인스턴스에서는 들어오는 로그 레코드를 미러 데이터베이스에 적용하여 계속 롤포워드합니다. 자세한 내용은 데이터베이스 미러링 개요를 참조하십시오.

트랜잭션 로그 특성

SQL Server 데이터베이스 엔진 트랜잭션 로그의 특성은 다음과 같습니다.

  • 트랜잭션 로그는 데이터베이스에서 별도의 파일 또는 파일 집합으로 구현됩니다. 로그 캐시는 데이터 페이지의 버퍼 캐시와는 별도로 관리되므로 데이터베이스 엔진에 단순하고, 빠르고, 강력한 코드를 구현할 수 있습니다.

  • 로그 레코드 및 페이지의 형식은 데이터 페이지의 형식을 따르도록 제한되어 있지 않습니다.

  • 트랜잭션 로그는 여러 파일에 구현할 수 있습니다. 트랜잭션 로그에 FILEGROWTH 값을 설정하여 자동으로 확장되도록 파일을 정의할 수 있습니다. 이를 통해 트랜잭션 로그에서 공간이 부족해질 확률이 줄어들며 동시에 관리 오버헤드가 줄어듭니다. 자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하십시오.

  • 로그에서 공간을 재사용하는 메커니즘은 빠르게 수행되며 트랜잭션 처리량에 최소의 영향만 미칩니다.