recovery interval 옵션
recovery interval 옵션을 사용하여 Microsoft SQL Server 가 데이터베이스를 복구하는 데 필요한 데이터베이스당 최대 시간(분)을 설정할 수 있습니다. SQL Server 인스턴스는 시작할 때마다 커밋되지 않은 트랜잭션을 롤백하고 커밋된 트랜잭션을 롤포워드하여 각 데이터베이스를 복구합니다. 단, 이러한 작업이 가능하려면 SQL Server 인스턴스가 중지되었을 때 변경 내용이 디스크에 기록되지 않았어야 합니다. 이 구성 옵션은 각 데이터베이스를 복구하는 데 필요한 시간의 상한값을 설정합니다. 기본값 0을 사용하면 SQL Server 에서 자동으로 구성합니다. 기본값을 사용할 경우 복구 시간은 1분 이하로, 검사점은 활성 데이터베이스당 약 1분 간격으로 구성됩니다.
recovery interval 옵션은 SQL Server 가 각 데이터베이스에서 검사점을 실행하는 시기를 제어합니다. 검사점은 데이터베이스 단위로 실행됩니다. SQL Server 는 검사점에서 모든 로그 정보와 모든 수정된 페이지가 메모리에서 디스크로 플러시되는지 확인합니다. 이렇게 하면 롤포워드된 트랜잭션이 모두 디스크에 있을 수 있도록 수를 제한하여 복구에 필요한 시간을 제한할 수 있습니다. 검사점 이전의 수정 내용은 해당 검사점에서 디스크로 플러시되므로 롤포워드할 필요가 없습니다.
recovery interval 옵션은 장기 실행 트랜잭션의 실행을 취소하는 데 걸리는 시간에 영향을 주지 않습니다. 예를 들어 서버가 비활성화되기 전에 장기 실행 트랜잭션을 업데이트하는 데 2시간이 소요되는 경우 장기 실행 트랜잭션을 롤백하기 위해 실제 복구 시간은 recovery interval 값보다 훨씬 길어집니다.
SQL Server 는 복구 시간 간격 내에 롤포워드할 수 있는 데이터 수정 횟수를 계산합니다. 일반적으로 SQL Server 는 마지막 검사점 이후에 데이터베이스에서 수행된 데이터 수정 횟수가 SQL Server 가 복구 시간 간격 내에 롤포워드할 수 있다고 계산한 수에 도달하면 데이터베이스에 검사점을 실행합니다. SQL Server 는 경우에 따라 예상 횟수보다 작으면 로그가 70% 이상 채워질 때 검사점을 실행합니다.
각 데이터베이스의 검사점 빈도는 시간이 아니라 데이터 수정 횟수를 기준으로 합니다. 읽기 전용 작업에 주로 사용되는 데이터베이스에는 검사점이 많지 않지만 트랜잭션 데이터베이스에서는 검사점이 자주 실행됩니다.
검사점이 너무 자주 실행되어 성능을 저하시키지 않는 한 recovery interval을 0(자체 구성)으로 설정해 두십시오. 검사점이 너무 자주 실행되면 이 값을 조금씩 늘리십시오.
recovery interval은 고급 옵션입니다. sp_configure 시스템 저장 프로시저를 사용하여 설정을 변경하려면 show advanced options를 1로 설정했을 때만 recovery interval을 변경할 수 있습니다. 이 설정은 서버를 중지했다가 다시 시작하지 않아도 즉시 적용됩니다.
recovery interval 옵션을 60(분)보다 큰 값으로 설정하려면 RECONFIGURE WITH OVERRIDE 문을 실행해야 합니다.
참고 항목
개념
관련 자료
RECONFIGURE(Transact-SQL)
sp_configure(Transact-SQL)
sp_dboption(Transact-SQL)