Sql Server 2008′de sıkıştırılmış yedek alma (compressed backup)
Sql Server 2008 ile birlikte gelen güzel bir yenilikten bahsetmek istiyorum, backup sırasında sıkıştırma (backup with compression).
Bu özelliği test etmek için, Sql Server 2008 R2 kurulu makinama AdventureWorks 2008R2 veritabanını yükledim.
Yükleme işleminden hemen sonra, şu sql cümlesi ile veritabanının backup’ını aldım;
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'C:\EnginPOLAT\AdventureWorks2008R2_Backup.bak' WITH NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
Karşılaştırma yapabilmek ve COMPRESSION anahtar kelimesini denemek için, bir de şu sql cümlesi ile yedek aldım;
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'C:\EnginPOLAT\AdventureWorks2008R2_Backup.bak' WITH COMPRESSION, NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
Gördüğünüz gibi, sıkıştırma özelliğini kullanmak için, backup script’inin options parçasına (WITH anahtar kelimesinden sonra gelen kısım), COMPRESSION anahtar kelimesini eklemek yeterli.
Şimdi gelelim karşılaştırmalara;
Orjinal boyut : 200.192 KB (Data) + 38.912 KB (Log)
Backup işlemi (Normal) sonucu oluşan dosya : 186.461 KB
Backup işlemi (Compression) sonucu oluşan dosya : 44.507 KB
Normal backup’a göre sıkıştırma oranı : %77
Backup alma süreleri açısından karşılaştırma,
Backup işlemi (Normal) : 7.505 saniye (24.018 MB / saniye)
Backup işlemi (Compression) : 4.521 saniye (39.862 MB / saniye)
Hız artışı : %40
Ne yazık ki, CPU kullanım oranlarını ölçemedim. Eğer ölçebilen varsa, yorumlarınızı duymak isterim.
MSDN’de yeralan şu sayfada yazdığına göre, backup işlemine compression eklemek, CPU kullanımında önemli bir artışa yol açarmış.
Varsayılan olarak alınacak tüm backup’larda sıkıştırma özelliğini açmak istersek;
EXEC sp_configure 'backup compression default', '1'; RECONFIGURE WITH OVERRIDE
script’ini çalıştırmak yeterli.
İlgili diğer başlıklar:
- Sql Server CSV (Comma Seperated Value) çıktı üretme
- Sql Server Query Plan Cache
- Sql Server’da Hash işlemi
- Sql Server’da En Meşgul Veritabanını Bulmak
- SQL Server’da o an çalışan sorguları listelemek
- Sql Server COUNT ve COUNT_BIG Fonksiyonları
- Sql Server 2008′de Çoklu Insert İşlemi
- Sql Server 2008 Except ve Intersect Anahtar Kelimeleri
- VB.NET’te anahtar kelimeyi değişken ismi olarak kullanma
- Sql Server veritabanında en büyük 10 tablo
Hocam,
sıkıştırma olduğunda sürenin normalden daha uzun olması gerekmez mi?
Yedek alma işlemi sırasında, zamanın çoğunu disk işlemi alıyor (Yedek alınan veritabanının diske yazılması). Sıkıştırılmış dosya daha az disk işlemine ihtiyaç duyduğu için süre kısalıyor.
Yani, Sql Server önce yedek alıp, sonra yedek aldığı dosya sıkıştırmıyor.
Bu esnada CPU kullanımının artması gayet normal.
Aslında aynı testi bir de size’i baya büyük bir database de denemek lazım
özellikle veritabanını belleğe alıp sıkıştırma yapamayacak kadar büyük olması durumunda
bence bu durumda ibre tersine dönebilir. tabiki tahmin sadece :)
Merhaba Ziya,
AdventureWorks veritabanında 10 kolonlu Test tablosu oluşturdum. İçerisine 12.000.000 (12 milyon) satır kayıt ekledim.
Veritabanını Shrink ederek gerçekte kapladığı yeri ölçtüm : 5.000.704 KB
Önce compress etmeden backup aldım : 4.987.994 KB backup dosyasını 213,626 saniye’de oluşturdu (22,789 MB / saniye)
Sonra compress ederek backup aldım : 2.416.744 KB backup dosyasını 136,405 saniye’de oluşturdu (35,690 MB / saniye)
Rakamlara bakarsak, sıkıştırma işleminin backup süresini kısalttığını söyleyebiliriz.
Sql scriptleri şuradaki dosyaya yazdım, download edip, sen de deneyebilirsin.
Hocam teşekkürler,
acaba RESTORE performansı nasıl oluyor :)
Ziya, her şeyi hocamızdan beklememeliyiz. Bence RESTORE performansını da sen ölçüp, bulduğun değerleri bizimle paylaşmalısın. :)
Engin hocamızında dediği gibi :D buda bize ödev olsun :D soru sormaya korkar olduk, ödev olacak diye:P
Engin bey faydalı ve güzel bir yazı olmuş, sağolun. Ödeve istinaden :) faydalı olması dileğimle…
http://sqlcat.com/technicalnotes/archive/2008/04/21/tuning-the-performance-of-backup-compression-in-sql-server-2008.aspx
burada compression işlemleri arasındaki farklar detaylı ve grafiksel anlatılmış. CPU kullanım da mevcut.
bir çalışmanın database’ni arkadaşım backup olarak gönderdi (dosya “.bak” uzantılı) fakat bunun nasıl açacağımı ya da nasıl SQL’e yükleyeceğimi bilmiyorum. yardım ederseniz sevinirim.
Backup alınmış dosyanın SQL Server ortamına Restore edilmesi gerekir.
MSDN’deki şu iki makale’den Restore Database ayrıntılarına ulaşabilirsin;
RESTORE (Transact-SQL)
How to: Restore a Database Backup (SQL Server Management Studio)