Komprimované zálohy databází

Microsoft SQL Server nabízí od verze 2008 možnost vytvářet přímo komprimované zálohy. Od verze 2008 R2 je toto možnost již od edice Standard.

Jelikož je komprimovaná záloha podstatně menší než nekomprimovaná, zapisuje se méně dat a tím se výrazně snižuje potřeba diskových I/O operací. Z tohoto důvodu je provedení komprimované zálohy ve výsledku rychlejší než u běžné zálohy.
Z důvodu provádění komprese dat se však významně zvyšuje využití CPU. Toto je potřeba zohlednit zvláště pokud zálohování trvá delší dobu (u velmi velkých databází)nebo probíhá při plném využívání serveru běžnými uživateli.
Samozřejmě je možné pomocí Resource Governoru omezit využití CPU pro zálohování, ale o tom až jindy.

Pomocí komprese je možné zmenšit zálohu až na 10% původní velikosti, což znamená významnou úsporu místa pro uložení, ale také zrychlení jakýchkoli přesunů, kopírování apod. Zároveň se může zkrátit čas vytváření zálohy zhruba na polovinu.

Po instalaci SQL Serveru je defaultní chování nastaveno tak, že komprimace záloh se neprovádí. Je však možné zadat pro každou konkrétní zálohu, zda má být komprimována či nikoli.

Záloha pomocí Management Studia

Z lokální nabídky na konkrétní databázi vyvoláme funkci Tasks > Back Up… a na stránce Option otevřeného okna zvolíme zda bude nebo nebude záloha komprimována, či se použije defaultní nastavení serveru.

Záloha pomocí T-SQL
Příklad pro databázi např. TEST a složku pro zálohy d:\backup.
Záloha bude komprimována (WITH COMPRESSION):

SQL> backup database TEST to disk ='d:\backup\zaloha.bak' with compression

Záloha nebude komprimována (WITH NO_COMPRESSION):

SQL> backup database TEST to disk ='d:\backup\zaloha.bak' with no_compression

Pro zálohu bude použito defaultní nastavení serveru:

SQL> backup database TEST to disk ='d:\backup\zaloha.bak'

Defaultní nastavení serveru

Standardně je defaultní nastavení takové, že server zálohy nekomprimuje, změnit toto nastavení můžeme pomocí Management Studia v Server Properties na stránce Database Settings zatržením Compress Database. Změnit je možné i pomocí T-SQL:

SQL> EXEC sp_configure 'backup compression default', '1';
SQL> RECONFIGURE WITH OVERRIDE;

Porovnání komprimované zálohy

Pro porovnání výsledků zálohování při použití komprese je možné použít pohled BACKUPSETS ze systémové databáze MSDB. Podle předchozího popisu si vytvoříme komprimovanou a nekomprimovanou zálohu stejné databáze.

U každého backup setu můžeme porovnat jeho komprimovanou a nekomprimovanou velikost:
SQL> select name,
backup_size/1024/1024 AS 'size[MB]',
compressed_backup_size/1024/1024 AS 'size[MB]',
(compressed_backup_size/backup_size)*100 as 'ratio[%]'
from msdb.dbo.backupset;

Můžeme také porovnat čas vytváření pro komprimovaný a nekomprimovaný backup set (zde musíme porovnat čas ve dvou řádcích výsledku):
SQL> select name,
datediff(MINUTE, backup_start_date, backup_finish_date) as 'backup_time [m]'
from msdb.dbo.backupset;

Komentáře nejsou povoleny.