SQL Server 기본적으로 제공하는 백업, 복구 조금 느린감이 없지 않습니다.
느린 이유중의 가장 큰 원인은 IOSubsystem에서의 병목이 대부분입니다.
보통 이러한 문제는 초당 전송되는 양 보다 IO 요청 수로 인해 성능적 문제가 발생하고 있습니다. 보다 많은 데이터를 빠르게 이동하기 위해서는 보다 큰 블록을 사용하여 전송한다면 보다 많은 데이터를 빠르게 옮길 수 있습니다. (일반적인 내용입니다. 모든 시스템에 이와 같은 문제가 발생하는 것은 아님)
이러한 문제로 인해 대용량의 데이터를 빠르게 복구 및 백업을 하기 위해서 하드웨어에서 제공하는 백업 및 snap등의 솔루션등을 사용하고 있습니다.
하지만, 이것도 돈이 많이 드는 솔루션이라 쉽게 도입하기는 쉽지 않습니다.
그럼, SQL Server 2008에서 압축 백업, 복원을 기능을 사용한다면?
분명 지금보다 빠르지만, 현재 SQL Server 2000, 2005에서 할 수 있는 방법은?
2005 BOL 에서 Backup, Restore 부분을 보시면 MAXTRANSFERSIZE를 설정 할 수 있습니다.(SQL Server 2000 도 가능)
MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
SQL Server와 백업 미디어 간에 사용되는 가장 큰 전송 단위(바이트)를 지정합니다. 가능한 값은 최대 4194304바이트(4MB)까지 65536바이트(64KB)의 배수입니다.
이 옵션은 아래와 같이 memtoleave의 조각화로 인한 오류 발생시 작은 블록으로 전송하여 문제를 해결 할 수 도 있습니다.
Downgrading backup buffers from 960K to 64K
이 옵션은 기본값은 1MB이며, 최대 4MB 설정 할 수 있습니다.
해당 수치를 명시적으로 사용한다고 하더라도 받듯이 설정된 크기로 전송 하지는 않습니다.
주의해야 할 사항은 백업 및 복구는 Memtoleave 영역의 메모리를 사용하며 최소 블록 단위보다 큰 연속된 메모리 공간이 필요합니다.
Memtoleave 가 많이 조각화난 상태인 32bit환경에서는 4MB설정 후 작업시 오류가 발생 할 수 있습니다.
보다 많은 Memtoleave 영역을 가지고 있는 64bit 환경 및 조각화 상태가 적은 32bit 환경이라면, 테스트 할 가치가 충분히 있을 것이라 생각됩니다.
<4MB, 1MB 백업 테스트>
송 혁, SQL Server MVP
sqler.pe.kr
nexondbteam.tistory.com