Veritabanı Otomatik Küçültme (Auto Shrink)

SQL Server, Oracle Add comments

SQL Server üzerinde bir veritabanı oluÅŸturduÄŸumuzda veritabanının sahip olduÄŸu data ve log dosyalarının baÅŸlangıç büyüklük deÄŸerlerini de belirleriz. Aynı zamanda veritabanının ileride büyüme ihtiyacı duyduÄŸunda nasıl hangi oranda büyüyeceÄŸi de data ve log dosyası bazında belirtilir. EÄŸer veritabanı için maksimum bir büyüklük verilir ve bunu aÅŸmaması iÅŸaretlenirse maksimum deÄŸerden daha fazla yere ihtiyaç duyması durumunda sistem hata verecektir. Bu yüzden veritabanlarının büyüklük ayarlarının sistemin amacına uygun düzenlenmesi gerekir. SQL Server özellikle büyük veritabanlarında index düzenlemeler, geniÅŸ çaplı güncellemeler, toplu kaydetme veya silme gibi yoÄŸun disk iÅŸlemlerinde o veritabanını büyütme ihtiyacı duyar. Bu büyüme kalıcı veya geçici olabilir. Özellikle kalıcı durumlarda sistemin kullandığı geniÅŸ disk alanını serbest bırakmak veya veritabanı dosyalarında zamanla kullanılmayan data page’leri yok etmek için daraltma (shrinking) iÅŸlemi gerçekleÅŸtirilir. Bu iÅŸlem programcı tarafından yapıldığı gibi SQL Server’in kendisi tarafından da otomatik olarak yapılabilir. Fakat SQL Server’in (yarım saatte bir) bunu otomatik yapması çok kullanıcılı canlı sistemlerde sorun teÅŸkil edebilmektedir. Çünkü bu prosesin devreye girmesi o anda aktif bazı kullanıcıları lock edebilmektedir. Bazen sistem üzerinde yoÄŸun bir kilitlemenin yaÅŸamasına neden olabilmektedir. Bu yüzden büyük veri tabanlarında “Auto Shrink” seçeneÄŸinin kapalı olması tavsiye edilir. Bu özellik varsayılan olarak kapalı durumdadır. AÅŸağıdaki ifadeyle mevcut veritabanının bu özelliÄŸi sorgulanmıştır.

SELECT DATABASEPROPERTYEX('','IsAutoShrink')

Bu ifadenin 1 deÄŸerini döndürmesi “Auto Shrink” seçeneÄŸinin aktif olduÄŸu anlamına gelir. Bu bilgiye Enterprise Manager / Management Studio üzerinden veya sp_dboption yordamı aracılığıyla eriÅŸilebilir. “Auto Shrink” özelliÄŸi bu araçlar kullanılarak pasif yapılabildiÄŸi gibi aÅŸağıdaki ifadeyle de kapatılabilir.

ALTER DATABASE  SET AUTO_SHRINK OFF 

Bu durumda shrinking işlemini veritabanı yöneticisinin kendisinin yapması gerekir. Bunun için de aşağıdaki yöntemler kullanılabilir;

DBCC SHRINKDATABASE veya DBCC SHRINKFILE komutları

Veritabanını tüm dosyalarıyla birlikte küçültmek için DBCC SHRINKDATABASE komutu, sadece bir dosyayı küçültmek için DBCC SHRINKFILE komutu kullanılabilir. Aşağıdaki satır ALISVERIS isimli veritabanındaki tüm data ve log dosyalarının boyutunu küçültülmüştür.

DBCC SHRINKDATABASE (ALISVERIS)

Bu durumda bu dosyalarda kullanılmayan boÅŸ alanlar dosyalardan çıkarılır ve iÅŸletim sistemine teslim edilir. Ayrıca bu komuta küçültme oranı da parametre olarak girilebilir. AÅŸağıdaki satır ALISVERIS veritabanı için shrink sonrası boÅŸ alanın toplam alanının %10′u olacak kadar küçültür.

DBCC SHRINKDATABASE (ALISVERIS, 10) 

Bu komut üçünce parametre olarak NOTRUNCATE veya TRUNCATEONLY seçeneklerini de alır.

Veritabanı düzeyinde değil de sadece bir dosya bazında küçültme yapılmak istenirse DBCC SHRINKFILE komut kullanılır. Mevcut veritabanının data ve log dosyaları hakkında bilgi almak için sp_helpfile yordamı kullanılır. Herhangi bir dosya hakkında bilgi almak için bu yordama o dosyanın mantıksal adı parametre olarak geçilir. Bu yöntem genellikle log dosyalarını küçültmek, başlangıç büyüklüklerine geri döndürmek için kullanılır. Sunucu üzerindeki log dosyalarının boyutlarını öğrenmek için DBCC SQLPERF ( LOGSPACE ) komutu da kullanılabilir. Aşağıdaki satır ALISVERIS veritabanına ait data dosyasını 20MB küçültür.

DBCC SHRINKFILE (ALISVERIS_DATA,20)

Bu komutlar programcı tarafından manual çalıştırıldığı gibi otomatik olarak belli bir scheduleye baÄŸlanabilir. Bunu otomatik çalıştıracak job Enterprise Manager / Management Studio aracında database’i saÄŸ tıklayarak “All Tasks » Shrink Database [SQL2000]” / “Tasks » Shrink[SQL2005]“menüsünden yaratılabilir veya programcı tarafından elle oluÅŸturulabilir.

Maintenance Task/plan Hazırlamak

Enterprise Manager / Management Studio araçlarında Management bölümü altındaki “Database Maintenance Plans” bölümü kullanılarak bir veya daha fazla veritabanı için iÅŸlem emirleri oluÅŸturulabilir. Bu penceredeki Optimizations sekmesinde ilgili küçültme ayarları düzenlenir.


Leave a Reply


3 + 4 =

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS GiriÅŸ