2007~2011/SQL Server2009. 9. 29. 00:01
SQL Server 2008 Enterprise Edition 에는 백업 압축 기능을 사용할 수 있습니다. 이것은 CPU 리소스를 사용하여 백업 데이터를 압축함으로써 DISK I/O를 줄이는 방법입니다. Enterprise Edition 에서만 압축 백업을 할 수 있으며 SQL Server 2008 모든 버전에서 복원할 수 있습니다. (msdn 에 그렇게 쓰여 있습니다. 테스트 해 본 적 없습니다)

압축 백업의 과도한 CPU 사용을 막기 위해서는 Resource Governor(리소스 관리자)를 사용하여 CPU 사용량을 제한할 수 있습니다. 머지 않아(?) 테스트 놀이 한 번 해 보겠습니다. 

사용 방법은 BACKUP T-SQL 구문에 WITH COMPRESSION 만 추가해 주면 됩니다. 일반 백업과 압축 백업을 비교한 몇 가지 테스트 결과 아래와 같이 정리하였습니다.


1. 일반 백업
BACKUP DATABASE AdventureWorks2008 TO DISK = 'D:\AdventureWorks2008.BAK' WITH NO_COMPRESSION, INIT

가. 시작 시간 : 15:27:28:380
나. 종료 시간 : 15:27:38.393
다. 결과 
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'AdventureWorks2008_Data'에 대해 23024개의 페이지를 처리했습니다
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'FileStreamDocuments'에 대해 36개의 페이지를 처리했습니다 
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'AdventureWorks2008_Log'에 대해 1개의 페이지를 처리했습니다 
BACKUP DATABASE이(가) 23061개의 페이지를 9.669초 동안 처리했습니다(18.632MB/초)


2. 압축 백업
BACKUP DATABASE AdventureWorks2008 TO DISK = 'D:\AdventureWorks2008_COMPRESSION.BAK' WITH COMPRESSION, INIT

가. 시작 시간 : 15:28:09.600
나. 종료 시간 : 15:28:14.333
다. 결과 
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'AdventureWorks2008_Data'에 대해 23024개의 페이지를 처리했습니다
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'FileStreamDocuments'에 대해 36개의 페이지를 처리했습니다 
파일 1에서 데이터베이스 'AdventureWorks2008', 파일 'AdventureWorks2008_Log'에 대해 1개의 페이지를 처리했습니다 
BACKUP DATABASE이(가) 23061개의 페이지를 4.586초 동안 처리했습니다(39.284MB/초)


3. 디스크 사용량 비교 
 가. 일반 백업 : 186,461KB
 나. 압축 백업 : 44,575KB 


4. 압축 비율 확인
SELECT backup_size/compressed_backup_size*100 FROM msdb..backupset;

 가. 일반 백업 : 100.000%
 나. 압축 백업 : 23.907% 


5. CPU 사용량 비교 
WITH COMPRESSION 을 사용하였을 경우, sqlservr.exe 프로세스의 USER MODE CPU 사용이 NO_COMPRESSION 과 비교해 볼 때 크게 증가한 것을 확인할 수 있었습니다. 



그렇다면 복원하는 데 소요되는 시간은 어떤 차이가 있을까요?.... 직접 해 보시면 좋을 듯 합니다. ^^; 
백업 압축된 백업 세트의 복원이 역시 빠릅니다.


[참고자료]

방법: 리소스 관리자를 사용하여 백업 압축을 통해 CPU 사용량 제한(Transact-SQL)


작성자 : Lai Go / 작성일자 : 2009.09.28
Posted by Lai Go