Database Snapshots: Ne kadar aynı ne kadar ayrı?


Database Snapshot’ı alabilmek yeri geldiğinde çok faydalı bir yetenek. Kullanmayanlar için ne yaptığını hatırlatacak olursak:

Bir veritabanının snapshot’ını aldığınızda mantıksal büyüklük olarak veritabanının data dosyalarıyla aynı büyüklükte dosyalara sahip olan bir veritabanı yaratmış oluruz. Ama bu dosyalarda aslında fiziksel olarak sadece, kaynak veritabanında snapshot’ın alındığı andan itibaren değişen sayfaların orijinal halleri bulunur.

Böylelikle snapshot veritabanı kendisine bir sorgu atıldığında değişmemiş dataları kaynak veritabanından, değişmişleri ise kendisinden verebilir. Yani snapshotın alındığı an itibariyle verilere ulaşmış olursunuz.

Mesela bir iş zekası sistemine gecelik aktarımları yaparken snapshot üzerinden çalışarak, siz aktarıma başladıktan sonra oluşan verileri göz ardı edebilirsiniz. Ya da bir güvenlik önlemi olarak her sabah bir snapshot alıp (öncekileri düşürerek tabii, yoksa birikir) gün içinde diyelim bir referans tablosu silindiğinde, bir procedure yanlış güncellendiğinde, buna benzer mantıksal hatalar olduğunda, sabahki haline snapshot’tan erişebilirsiniz.

Peki diyelim ki snapshotları zaten kullanıyorsunuz. Şimdi size hitap edecek bir bilgiye geldi sıra:

Snapshotlar sadece yaratıldıkları andan itibaren değişmiş sayfaları tutar fiziksel olarak, doğru. Snapshotın gerçek disk yükünü belirleyen de budur. Dolayısıyla bir snapshot’ın çok yaşlanmasına izin vermezseniz, muhtemelen minimal bir büyüklüğü olacaktır. Ancak… Evet bir ancak var… Orijinal database ve snapshotlarının herbiri management studio’dan baktığınız zaman ayrı databaseler gibi görünürler. Use komutunu kullanarak birinden birine geçiş yapabilirsiniz. Bellek açısından baktığınızda da bu farklı görme ilkesi geçerli. Yani bir database ve diyelim 3 snaphotı olsun. Diyelim ki hiç değiştirmediğiniz bir de tablo olsun. Bunun anlamı bu tablonun fiziksel olarak sadece orijinal veritabanında bulunduğu, üç snapshotın veriyi oradan çekerek gösterdiğidir. Oysa memory’de bu tabloyu 4 veritabanının herbirinden ayrı ayrı seçerseniz, 4 kopya oluşturmuş olursunuz. Yani snapshotlardan yapılan sorgular kökte aynı disk sayfalarından geliyor olsa bile, memory’de ayrı buffer poolları bulunacak ve ayrı sayfalar olarak yer tutacaklardır.

Aklınızda olsun.

Bu yazı SQL Server içinde yayınlandı. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s