Full ve bulk_logged recovery mode’larıyla ilgili birkaç söz


SQL Server’da seçtiğiniz recovery mode, transaction logun davranış şeklinde önemli etkilere sahiptir.

Full ve simple mode’ları arasındaki fark genelde biliniyor. Bilenler de bilmeyenlere anlatsın : )

Ama Full ve bulk_logged arasındaki fark çok iyi bilinmiyor. Bu girdide ikisi arasındaki farklardan bahsedeceğim.

Pratik etkileriyle düşünelim:

1. Full recovery mode’da (transaction log backuplarını planlı olarak aldığınızı varsayarak) istediğiniz bir ana restore yapabilirsiniz. Bunun temel sebebi, insert update ve delete gibi işlemlerin yanısıra toplu yükleme (bcp) ve indeks oluşturma gibi işlemlerin de full mode’da tam olarak loga işlenmesidir.

2. Bu avantaja karşılık, full mode’da transaction logunuz çok büyüyebilir.

3. Bulk_logged mode’da index yaratma, toplu yükleme gibi bazı işlemler sadece toplu değişiklikler olduğunu kaydeder. Böylelikle transaction logun büyüklüğü çok daha uygun seviyelerde kalabilir. Ancak eğer bu toplu işlemlerden en az bir tane gerçekleştiyse, istediğiniz ana dönme yeteneğini kaybedersiniz. O andan itibaren dönüş yapabileceğiniz anlar elinizdeki transaction log backupları serilerinin bitim anları ile kısıtlanmıştır.

4. Belki yukarıdakileri biliyordunuz ama bu hayli az bilinen bir durum: Bulk_logged modunda özel bir bitmap sayfasında (ya da sayfalarında) SQL Server bulk işlem gören extentlerle ilgili bilgiyi bu bitmapte tutar. Bu tür işlem gören extentlere ilişkin bit 1 yapılır. Transaction log backupı sırasında transaction logunun kendisi yanısıra bu bitmapde değeri bir olan extentler de yedeğe dahil edilir. Yedeğin alınmasıyla da bitmapteki tüm bitler tekrar 0 yapılır. Bu çalışma yapısının pratikte en önemli etkisi şudur: Transaction logunuz full’dekine göre daha küçük olsa bile, alınan yedeği bulk olarak değişen extentleri de içerdiği için full mode’daki log backupından daha büyük olabilir. Bu durum, yedek alma süresini de uzatacaktır. Restore süreleri ise full ve bulk_logged için aşağı yukarı eşit olacaktır.

Küçük bir ilave: Mesela bir disk hatası durumunda, veri dosyanız erişilemez durumda ama transaction logunuz erişilebilir durumdaysa, WITH NO_TRUNCATE seçeneğiyle transaction log backupı alma şansınız olabilir. Ancak BULK_LOGGED recovery modundaysanız ve bulk işlem yapıldıysa, işaretlenen extentleri de backupa dahil etmek isteyeceğinden ve veri dosyaları erişilemez durumda olduğundan backup alma şansınız olmayacaktır.

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