SQL Server/SQL Server 이중화_백업

[MSSQL] flag 3042 백업에 필요한 실제 크기만 디스크로 할당하는 방법

꽁담 2021. 4. 25. 03:40

SQL Server 의 압축백업 방법

SQL Server 2008 버전부터 압축백업이 지원됩니다.

압축된 백업은 압축되지 않은 백업보다 작기 때문에, I/O 에 대한 비용이 절약되며 백업속도가 크게 향상됩니다.

다만 압축을 하기위해 CPU 오버헤드가 발생합니다.

 

반면 압축을 하지 않는다면 CPU 오버헤드는 발생하지 않지만 I/O 가 훨씬 많이 발생하게 될 것입니다.

그렇지만 I/O 와 CPU 의 부하 비교했을 때, CPU 의 오버헤드가 발생하는 부분이 훨씬 효율적입니다.

 

 

압축백업의 이점

압축된 백업에 대한 최종 백업 파일의 크기는 데이터를 어느정도나 압축할 수 있는지에 따라 달라집니다.

테스트했을 때 대략적으로는 원본백업파일의 80% 크기 정도를 생각하면 좋습니다.

참고로 이 80% 도 데이터 유형에 따라 달라질 수 있으므로, 기준치를 80% 으로 잡는건 옳지는 않습니다.

 

 

압축백업의 약점

이 말은, 백업작업이 최종적으로 완료되기 전까지는 백업파일크기를 알 수 없다는 점입니다.

기본적으로 압축백업을 할 때, SQL Server 엔진에서 백업파일에 대한 사전크기 할당 알고리즘을 적용합니다.

 

사전 할당 알고리즘은 미리 정의된 백분율로 파일크기를 먼저 할당해놓습니다.

그러고 난 후 작업도중 더 많은 공간이 필요한 경우 파일 크기를 늘려나가게 되며,

작업이 완료되었을 때 최종크기가 할당한 공간보다 작으면 파일 크기를 축소합니다.

 

즉, 사전 할당 알고리즘에 의에 더 많은 파일 공간이 할당될 수 있게 된다는 점입니다.

 

 

파일크기를 먼저 할당하지 않는 방법

추적플래그 3042 는 백업 파일을 필요한 만큼씩 계속해서 늘려가도록 합니다.

따라서 사전할당 알고리즘이 무시되며 백업을 진행하면서 필요한 크기를 계속해서 할당해 나가게 됩니다.

 

 

테스트 결과

아래처럼 3042 추적플래그를 활성화 해줍니다.

1
2
DBCC TRACEON (3042,-1);
GO
cs

추적플래그를 활성화 하지 않았을 때는, 좌측 네모박스처럼 파일크기가 한번에 할당됩니다.

추적플래그를 활성화 했을 때는, 우측 네모박스처럼 파일크기가 점차 커지는 걸 확인할 수 있습니다.

Trace Flag 설정이 안된 경우 Trace Flag 설정이 된 경우

 

그 외에 CPU 나 IO 부하량은 큰 차이가 나지 않아서 따로 정리하지는 않았습니다.