KodFeed İLMİN ZEKATI…

24Eki/090

MSSQL Server ve Auto Shrink

Auto Shrink(Otomatik sıkıştırma) Nedir?

Mssql server veritabanına bir kayıt eklerken page mantığını kullanmaktadır. Bu mantığa göre her bir page 8 K'dır ve her yeni kayıt için yeni bir page ayrılır. Auto shrink ise bu aşamada işimize yaramakta. Örneğin;

1. data boyutu 8 K, 1.page'e yazıldı

2. data boyutu 3 K, 2.page'e yazıldı

3. data boyutu 7 K, 3.page'e yazıldı.

toplam 3 page(24K) alanımıza toplam 18K veri yazılmıştır. Bu 3 page'de 6 K'lık bir bellek kaybı yaşanmaktadır. 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. 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.

Auto Shrink

Shrink işlemi sistem yöneticisi tarafından manuel olarak yapılabileceği, otomatik olarak mssql server tarafından da yapılabilir. Varsayılan olarak false yani otomatik sıkıştırma yapmamaktadır. Otomatik sıkıştırma yapmasını istiyorsanız eğer database'i sağ tıklatıp properties'den Auto Shrink True yaparak aktif hale getirebilir ve ya

ALTER DATABASE DATABASEADI SET AUTO_SHRINK ON

ile açabilirsiniz. ON, OFF yapılarak kapatılabilinir. Araştırdığım kadarıyla bir çok kişi auto shrink ile ciddi problemler yaşamış ve auto shrink işlemini manuel olarak yapılmasını önermiştir.

Manuel Shrink

Bir çok kişi sistemin kitlenmesi ile ilgili ciddi problemler yaşamasından dolayı shrink olayının otomatik olmasını önermiyor. Eğer sizde kendiniz manuel olarak bu işlemi yapmak istiyorsanız aşağıdaki sql komutunu çalıştırarak bu işlemi gerçekleştirebilirsiniz.

DBCC SHRINKDATABASE (DATABASEADI) 

ya da boş miktarın %20'sini sıkıştırmak için;

DBCC SHRINKDATABASE (DATABASEADI,20) 

Bu sql satırı çalıştırıldığında belirtmiş olduğunuz veritabanının datafile ve log dosyalarının boyu küçülecektir. Elimde bulunan 113 GB veritabanı üzerinde test yaptığımda ise 38 GB gibi ciddi bir kazanç sağladığını ve shrink sonucunda yaklaşık 75GB yer kapladığını gözlemledim.

Ama dediğim gibi uzmanlar auto shrink kullanılmasını kesinlikle önermiyorlar. Shrink kullanılması isteniyorsa eğer manuel olarak yapılmasını hatta shrinkdatabase yerine shrinkfile kullanılmasını öneriyorlar.

VN:F [1.9.13_1145]
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
MSSQL Server ve Auto Shrink, 9.0 out of 10 based on 1 rating
Etiketler: Yorum gönder.
Yorumlar (0) Geri izlemeler (1)

Leave a comment

(required)