Rastgele Yazılar : Lokasyon Tabanlı İş Zekası (Location Intelligence)
Rastgele Yazılar : Rman ile archive logları silmek (crontab)
Rastgele Yazılar : Oracle Veritabanı İpuçları
Rastgele Yazılar : SQL Kod Arşivi
Rastgele Yazılar : Oracle versiyon yükseltilmesi hakkında...
Rastgele Yazılar : Microsoft SQL Server 2008 Reporting Services (SSRS)
Rastgele Yazılar : SQL Server Veritabanı Snapshot Kavramı
Rastgele Yazılar : Oracle 11g Enterprise Manager Konsol ve Internet Explor...
Rastgele Yazılar : Oracle Sga Yapısı
Rastgele Yazılar : Sharepoint 2010 Belge Kitaplığındaki Dökümanları Searc...
Snapshot alma işlemi SQL Server 2005 le beraber gelen bir özelliktir ve daha sonra gelen 2008 ve 2012 de de devam eden bir özelliktir. Database Snapshot; En basit tanımıyla Veritabanının Herhangi bir anında alınan Salt okunur bir kopyası bir Fotoğrafı bir görüntüsüdür diyebiliriz.
Snapshot işlemi yapıldığı zaman SQL Server hedef seçilen Veritabanının o anki görüntüsünü alır fakat fiziksel olarak Diskte Snapshot ı alınan verinin o anki hali bulunmaz. Snapshot alınırken o an için veritabanında commit lenmemiş Transactionlar varsa bunlar Rollback yapılır.
Snapshot ı alınan veritabanında yapılan değişiklikler Snapshot için ayrılan Sparse File a yazılır. Böylece Client eğer Snapshot dan bir Select çektiği zaman ilgili data değişmişse eğer SQL Server değişmiş datayı Sparse file dan okurken, değişikliğe uğramamış bir datayı orijinal veritabanından okuyacaktır. Bu senaryoyu özetleyen en güzel portre MSDN in yayınladığı aşağıdaki resimdir.
Yukarıdaki Resimde 1.durumda Kaynak Veritabanının 10 Page inden 3 ü Update ediliyor. Bu Update edilen Page ler yine 1.durumda görüldüğü gibi Sparse File a yazılıyor. 2.Durumda Kaynak veritabanından 10 page den 7 si update ediliyor ve bu 7 Page de sparse file a yazılıyor. Snapshot için bir Rapor yada Sorgu çekildiği zaman Eski Page ler için SQL Server Source Database i okurken update e uğrayan page leri SQL Server Sparse file dan okur.
Snapshot ın temel amacı veritabanının herhangi bir anında yedeğini almak ve varsa raporlamaları Snapshot üzerinden yaparak belirli bir aralık için Stabil Rapor oluşturmaktır Ana veritabanında bir Admin veya küçük hatalar meydana gelirse Snapshot dan eski haline dönülür. Ancak şu çok önemlidir ki Snapshot Ana veritabanına bire bir bağlıdır ana veritabanı Silinirse yada göçerse Snapshot dan ana veritabanına dönülemez. O yüzden Snapshot işlemi tam olarak bir Backup Stratejisi denemez.
SQL Server Snapshot İşleminin Avantajları
1. Raporlama için Avantajlı bir yöntemdir. Anlık gerekmeyen ve sadece belirli zamanlar için Raporlama yapan kişiler e çok gerekli ve mükemmel bir özelliktir. Çünkü Raporlama yapacağı zaman bu özellik sayesinde Stabil data okunacaktır. Buda raporlama için çok önemlidir.
2. Yine Rapor oluşturmak için Historical data bulundurmayı sağlar.
3. Fiziksel kopya oluşturmadığı için Disk alanı bakımından normal kopyalama yerine kullanılabilir. Snapshot dosyasında sadece değişmiş veriler saklanır orijinal veriler Source database den okunur.
4. Kaynak veritabanına Zarar vermemek koşuluyla normal Backup-Restore yapma işlemine göre çok hızlı backup-restore yapılır. Ancak Kaynak veritabanına bir zarar gelirse Snapshot işlemi restore yapılamaz duruma gelir.
5. Administrative hatalarına karşı etkilidir. Yanlış çalıştırılan bir Update ve Insert scriptinden yada drop edilen bir tablo gibi bir hatadan hemen hızlıca Snapshot restore sayesinde dönülebilir.
6. Kullanıcılara hazır test database sunar. Kullanıcı istediği kadar hata yapsın bundan geri dönmek çok kolay olacaktır.
SQL Server Snapshot İşleminin Dezavantajları
1. Performans gerektiren Veritabanları için ekstra yüktür. Veritabanında değişen her page i Snapshot a da kopyaladığı için Veritabanına ve Disk e ekstra bir yük oluşturur.
2. Snapshot veritabanı, Ana veritabanına bağlı olduğu için Ana veritabanı göçerse yada Ana Veritabanı Offline modda olduğunda Snapshot da erişilmez.
3. Snapshot işlemi Effective bir Backup-Restore süreci olarak kullanılamaz.
4. Snapshot veritabanı Sadece Read-Only dir. Herhangi bir data değişmez değişmesi istendiğinde tekrar Snapshot alınır.
5. Snapshot ile Source Database aynı instance üzerinde olmak zorundadır.
6. Sürekli çok fazla Transaction barındıran Veritabanları için kötü bir yöntemdir önerilmez.
7. Snapshot işlemi Full Text İndexing i desteklememektedir.
8. Snapshot işlemi Sadece SQL Server ın Enterprise Versiyonlarında bulunmaktadır. Diğer SQL Server Versiyonlarında yoktur bu özellik.
9. Model,Master,tempdb gibi Sistem veritabanlarının Snapshot ı alınmaz.
10. Database Snapshot işlemi Sadece NTFS dosya sistemini desteklemektedir, FAT32 Dosya sistemine sahip Snapshot Sparse file oluşturulamaz.
SQL Server da Database Snapshot işleminin en efektif ve en çok kullanıldığı yeri özetleyen resim aşağıdaki gibidir.
Resimden de anlaşıldığı üzere Snapshot işlemi Mirroring yapılan Production sistemlerde Mirror Sunucu üzerinde ki veritabanının Snapshot ı alınarak Mirror Sunucu üzerinde ki Snapshot database de sadece Raporlama ortamı sağlanır.
Böylece Bir SQL Server yazımın daha sonuna gelmiş bulunmaktayım. Bir sonraki yazıda görüşmek dileğiyle Esen Kalın....
Mehmet Salih Deveci
Veritabanı Yöneticisi
http://mehmetsalihdeveci.net/