Archive

Archive for the ‘Compression’ Category

SQL Server 2008 Backup Compression Performance

18/07/2011 Leave a comment

U prethodnom postu pisala sam o kompresiji backupa, novoj funkcionalnosti SQL Servera. Tu su date osnove vezane za kompresiju backupa, kako uključiti kompresiju backupa na nivou instance, za svaki pojedinačni backup kao i neke karakteristike vezane za media set prilikom kompresije. U ovom postu pokazati ću usporedne rezultate performansi do kojih sam došla testiranjem backup i restore operacija kompresovanog/nekompresovanog backupa.

Testiranje backup operacije AdventureWorks2008R2 baze

Prvi test sam napravila korištenjem AdventureWorks2008R2 baze na klijentskoj mašini. Rezultat je sljedeći:

Nekompresovani backup je urađen za 5.442 sekunde, veličina backupa je 213MB a CPU je bio zauzet oko 16%.

Kompresovani backup je urađen za 2.849 sekundi, veličina backupa je 49MB a CPU je bio zauzet oko 29%.

Vidljivo je, da su performanse kompresovanog backup daleko bolje. Kompresovani backup je 4.34 puta manji od nekompresovanog backupa. Za očekivati je i da je vrijeme izvršenja kompresovanog backupa kraće (zbog mnogo manje količine IO operacija) što se i pokazalo testom. Ali opterećenost CPU-a je bila veća.

Testiranje restore operacije AdventureWorks2008R2 baze

Prije testa očekivala sam i da će restore operacije kompresovanog backupa biti bolje što se i pokazalo u testu. Rezultat je sljedeći:

Verifikacija backupa:

Baza

Vrsta backupa Vrijeme (sekundi)
AdventureWorks2008R2

Nekompresovani

1.703

AdventureWorks2008R2 Kompresovani

0.403

Restore baze (baza je već postojala na serveru):

Baza

Vrsta backupa Vrijeme (sekundi) CPU %
AdventureWorks2008R2

Nekompresovani

4.649

5.5

AdventureWorks2008R2

Kompresovani 2.663

9.5

Testiranje TestDB baze (26GB) na serveru

Sljedeći test je rađen na serveru s bazom veličine oko 26 GB. Rezultat je sljedeći.

Baza

Vrsta backupa Veličina backupa Vrijeme (mm:ss)

Omjer kompresije

TestDB

Nekompresovani

25.8 GB 03:36

1

TestDB

Kompresovani

5.97 GB 02:03

4.32

Opterećenost CPU-a prilikom kreiranja kompresovanog backupa veća je za 5-6%.

Verifikacija backupa za nekompresovani backup završena je za 1 minutu i 15 sekundi dok je za kompresovani backup završena za 41 sekundu.

Kompresija podataka i kompresija backupa

Kako SQL Server 2008 omogućava kompresije podataka na nivou reda (row) ili stranice (page), zanimalo me je kako kompresija backupa radi u kombinaciji sa kompresijom podataka (row or page compression).

Napravila sam test na mojoj klijentskoj mašini, i to tako da sam prilikom testiranja koristila bazu kod koje sam izvršila kompresiju svih tabela i indeksa. Rezultat je sljedeći:

Baza

Veličina baze

Veličina Backupa

Omjer kompresije

Backup Time (sekundi)

Vrsta backupa

Bez kompresije podataka

TestDb 168 MB 168 MB

1

4.453

Nekompresovani backup
TestDb 168 MB 48 MB

3.49

2.787

Kompresovani backup

Row Compression

TestDb 115 MB 115 MB

1

3.034

Nekompresovani backup
TestDb 115 MB 44 MB

2.61

2.237

Kompresovani backup

Page Compression

TestDb 72 MB 72 MB

1

2.195

Nekompresovani backup
TestDb 72 MB 41 MB

1.75

1.903

Kompresovani backup

Iz rezultata je vidljivo, da kompresija backupa komprimira i baze kod kojih su sve tabele i indeksi kompresovani row ili page kompresijom iako je omjer kompresije kompresovanog/nekompresovanog backupa manji nego kod baze kod koje nije uključena kompresija podataka. Vrijeme izvršenja kompresovanog backupa je kraće. Opterećenost CPU-a je veća prilikom kreiranja kompresovanog backupa.

TDE (Transparent Data Encryption) i kompresija backupa

Zanimalo me je i kakve su performanse kompresije backupa za baze kod kojih je uključen TDE. Rezultat je sljedeći:

Baza Veličina baze Veličina Backup

Omjer
kompresije

Backup Time
(sekundi)

Komentar
Test (TDE on) 222 MB 222 MB

1

4.199

Nekompresovani backup
Test (TDE on) 222MB 221 MB

1

4.218

Kompresovani backup

Kompresija backupa baza kod koje je uključen TDE rezultira visokim korištenje CPU-a, izvršenje kompresovanog backupa traje neznatno duže a gotovo da i nema razlike između veličine kompresovanog i nekompresovanog backupa.
Kompresija enkriptiranih podataka nije baš dobar izbor, tako da kompresiju backupa treba izbjegavati ukoliko imate bazu kod koje je uključen TDE.

Zaključak:
Vidljivo je da kreiranjem kompresovanog bakupa štedimo i prostor i vrijeme ali je CPU malo više opterećen prilikom izrade kompresovanog backupa. Ukoliko je CPU na serveru dosta opterećen a radite kompresovani backup tokom radnog vremena i ne želite da vam on ometa ostale operacije na serveru, korištenje CPU-a prilikom kompresije backupa moguće je ograničiti s Resource Governor-om.
Kompresija backupa je odlična izbor i za baze koje imaju uključenu kompresiju podataka (row ili page) dok bi se trebala izbjegavati za baze kod kojih je uključen TDE.
Oni koji koriste Log Shipping dobro mogu osjetiti poboljšanje performansi ukoliko uključe backup kompresiju, jer Log Shipping radi na principu kreiranja backupa, kopiranja backupa na network share lokaciju (obično na sekundarni server) i nakon toga restore backupa na sekundarnom serveru. Treba jedino obratiti pažnju na CPU, a ukoliko se primijeti  bottleneck ograničiti korištenje CPU-a za backup korištenjem Resource Governor -a.

Advertisements

SQL Server 2008 Backup Compression

10/07/2011 Leave a comment

Jedna od novih funkcionalnosti SQL Servera 2008 je i mogućnost kompresije backupa (backup compression). Native SQL Server backup (bez kompresije) zauzima približno isti prostor na disku kolika je i količina podataka u bazi. To u okruženjima s velikim bazama podataka, kada poslovna politika zahtjeva čuvanje više kopija backupa, znači i veliku potrošnju diskovnog prostora (ili traka) ali i gubitka vremena (što je veći backup – kreiranje backupa zahtjeva više vremena zbog IO operacija, kopiranje backupa traje duže itd.). Prije SQL Servera 2008 rješenje je bilo u nabavci softverskih alata od strane third-party proizvođača.

SQL Server 2008 donosi mogućnost kompresije backupa, što je obradovalo mnoge administratore a pogotovo one koji više vole koristiti native SQL Server backup (kao što sam ja). Kompresija backupa u SQL Server 2008 verziji podržana je samo u Enterprise izdanju dok SQL Server 2008 R2 omogučava kompresiju backupa i u Standard i Enterprise izdanju.

Kako uključiti backup kompresiju

Nakon instalacije SQL servera, funkcionalnost je isključena ali se vrlo jednostavno može uključiti za čitavu instancu SQL Servera. Ukoliko backup kompresiju uključite na nivou instance, svaki backup koji napravite biti će urađen s kompresijom. Sljedeća T-SQL naredba će uključiti backup kompresiju na nivou instance SQL Servera:

EXEC sys.sp_configure 'backup compression default', '1'
GO
RECONFIGURE WITH OVERRIDE
GO

Oni koji više vole koristiti GUI: desni klik na instancu SQL servera u SSMS i klik na Properties. U Server Properties prozoru, unutar Database Settings opcija odabrati Compress backup.

Backup compression Server Settings

Ukoliko ne želite uključiti kompresiju backupa na nivou instance, vrlo jednostavno možete prilikom kreiranja svakog pojedinačnog backupa specificirati da želite uključiti kompresiju backupa jednostavnim dodavanjem COMPRESSION u WITH klauzuli BACKUP naredbe.

BACKUP DATABASE AdventureWorks2008R2
TO DISK = 'D:\AW_backup.bak'
WITH COMPRESSION

Ili kroz GUI: U Options stranici Back Up Database prozora za Set backup compression opciju odabrati Compress backup.

Database backup compression settings

Media Set i kompresovani/nekompresovani backup

Ukoliko se radi backup na backup device ili se radi append backup-a na fajl, treba znati da nije moguće miješati kompresovane i nekompresovane backup-e. Ukoliko pokušate napraviti kompresovani backup na device koji sadrži nekompresovani backup prijavit će se greška:

Msg 3098, Level 16, State 2, Line 1
The backup cannot be performed because ‘COMPRESSION’ was requested after the media was formatted with an incompatible structure. To append to this media set, either omit ‘COMPRESSION’ or specify ‘NO_COMPRESSION’. Alternatively, you can create a new media set by using WITH FORMAT in your BACKUP statement. If you use WITH FORMAT on an existing media set, all its backup sets will be overwritten.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

Tako da, ukoliko backup device već sadrži nekompresovani backup, potrebno je formatirati backup device dodavanjem FORMAT u WITH klauzuli BACKUP naredbe.

BACKUP DATABASE AdventureWorks2008R2
TO BackupDevice
WITH FORMAT, COMPRESSION

Bitno je naglasiti, ukoliko se eksplicitno ne navodite WITH COMPRESSION ili NO_COMPRESSION u backup naredbi, backup će naslijediti kompresijska svojstva iz media seta a ne iz serverske konfiguracije.
Pa će, ukoliko pokušate napraviti nekompresovani backup bez specificiranja WITH NO_COMPRESSION (na nivou instance nije uključena backup kompresija) na device koji sadrži kompresovani backup, backup biti izvršen bez greške ali će backup biti kompresovan.
Da bi provjerili da li je media set kreiran s kompresijom ili ne može se koristiti sljedeća naredba:

RESTORE LABELONLY FROM DISK = 'D:\AW_backup.bak'  

Prilikom RESTORE operacije, nije potrebno specificirati o kakvoj vrsti backup fajla se radi, a sve edicije SQL Servera 2008 mogu napraviti restore baze iz kompresovanog backup fajla.