Ana Sayfa > Programlama, SQL > Sql Server 2008′de sıkıştırılmış yedek alma (compressed backup)

Sql Server 2008′de sıkıştırılmış yedek alma (compressed backup)

17 Kasım 2009

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.

Kaynak : Technet, MSDN


İlgili diğer başlıklar:



  1. Ziya Aşkar
    Kasım 18th, 2009 at 15:24 | #1

    Hocam,
    sıkıştırma olduğunda sürenin normalden daha uzun olması gerekmez mi?

  2. Kasım 18th, 2009 at 16:08 | #2

    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.

  3. Ziya Aşkar
    Kasım 18th, 2009 at 17:05 | #3

    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 :)

  4. Kasım 19th, 2009 at 11:39 | #4

    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.

  5. Ziya Aşkar
    Kasım 19th, 2009 at 11:55 | #5

    Hocam teşekkürler,
    acaba RESTORE performansı nasıl oluyor :)

  6. Kasım 19th, 2009 at 11:58 | #6

    Ziya, her şeyi hocamızdan beklememeliyiz. Bence RESTORE performansını da sen ölçüp, bulduğun değerleri bizimle paylaşmalısın. :)

  7. Fatih Yılmaz
    Kasım 22nd, 2009 at 01:26 | #7

    Engin hocamızında dediği gibi :D buda bize ödev olsun :D soru sormaya korkar olduk, ödev olacak diye:P

  8. Aralık 3rd, 2009 at 11:19 | #8

    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.

  9. Ocak 11th, 2011 at 22:18 | #9

    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.

  10. Ocak 12th, 2011 at 09:36 | #10

    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)