SQL Server의 복구 성능 이해

복구 성능은 주로 백업 복원 후의 복구가 아닌 크래시 복구에 주력합니다. 그러나 백업에서 복원한 후 복구할 경우 최적화가 가능합니다.

복구 시간은 마지막 검사점 이후에 얼마나 많은 작업이 실행되었는가 그리고 데이터 손실 시에 얼마나 많은 작업이 모든 활성 트랜잭션에 의해 실행되었는가에 따라 지정됩니다. SQL Server는 복구 간격이라는 구성 옵션을 사용하여 데이터베이스를 복구하는 데 필요한 대략적인 데이터베이스 당 최대 시간(분)을 설정할 수 있습니다. 이 복구 간격 설정은 검사점 빈도를 제어합니다. 복구 간격은 짧은 트랜잭션을 사용하는 OLTP(온라인 트랜잭션 처리) 시스템에서 복구 시간을 결정하는 기본 요소입니다.

설치 후 SQL Server는 복구 간격을 0으로 설정합니다. 복구 간격 설정이 기본 설정에 있고 장기 실행 트랜잭션이 없는 한 각 데이터베이스에 대한 복구는 대략 1분 혹은 그보다 적게 걸립니다. 데이터 손실 시에 장기 실행 트랜잭션이 활성 상태였다면 복원한 데이터를 복구할 때 복구 시간은 이 트랜잭션 효과를 롤백하는 데 걸린 시간에 의해 제어됩니다. 그러나 SQL Server 2005 이상 버전에서는 크래시 복구의 실행 취소 단계 또는 데이터베이스 미러링 장애 조치(Failover) 중에도 데이터베이스를 사용할 수 있으며 이 기능을 빠른 복구라고 합니다.

데이터베이스 하나를 복구하는 데 걸리는 시간이 보통 1분을 훨씬 초과하고 복구 간격 설정값이 0이며 롤백할 장기 실행 트랜잭션이 없는 경우 주 지원 공급자에게 문의하여 복구 성능 문제를 해결하십시오.

복구는 데이터베이스에 대한 가상 로그 파일에 근거하여 진행률을 보고합니다. 복구는 마지막 검사점 이후에 복구 초기 단계에서 로그를 분석하고 검색합니다. 분석 단계를 기반으로 복구는 복구 동안에 읽을 로그 분량을 예상합니다. 읽은 로그 분량은 복구 진행률을 보고하는 데 쓰입니다.

복구 간격 설정이 기본값에서 변경되면 데이터베이스 복구를 완료하는 데 그만큼 시간이 더 걸립니다. 예를 들어 복구 간격이 10으로 바뀌면 복구 간격이 기본 설정 0에 있을 때보다 복구를 완료하는 데 대략 10배나 더 많은 시간이 걸립니다.

로그가 늘어나면 작은 증가값이 아닌 큰 증가값을 사용하여 SQL Server를 시작하는 데 시간이 덜 걸리도록 하십시오. 사용하는 로그 증가값이 작을수록 SQL Server가 로그 증가값을 초기화하는 데 오래 걸립니다.

복원 작업 후 복구할 때 장기 실행 트랜잭션이 종료되면 서버가 롤백을 완료하게 하십시오. 장기 실행 트랜잭션을 롤백하는 동안 서버 프로세스를 종료하면 복구 시간이 길어집니다. 롤백 프로세스 길이를 염려한다면 시스템 관리자에게 문의하여 서버에서 활동이 일어나는지 확인하십시오.

장기 실행 트랜잭션이 있고 이 트랜잭션 동안 크래시가 발생하면 SQL Server는 복구 프로세스를 시작합니다. 이러한 경우 실행 취소 단계 동안 데이터베이스를 사용할 수 있으므로 복구 속도가 빨라집니다.

전체 복구 모델을 사용하여 백업에서 데이터를 복원할 때 복구 시간을 줄이는 방법은 데이터베이스 복원 시 복구 시간 줄이기를 참조하십시오.