DBCC SHRINKDATABASE ve DBCC SHRINKFILE ile veritabanı dosyalarının boyutlarının küçültülmesi
DBCC SHRINKDATABASE komutu ile veritabanındaki tüm data ve log dosyalarının
boyutunu küçültebilirsiniz. DBCC SHRINKFILE komutu ile ise veritabanınızı
oluşturan veri veya log dosyalarından birisini seçerek sadece seçtiğiniz
dosyanın boyutunu küçültebilirsiniz.
Peki veritabanınız hangi dosyalardan oluşuyor?
Eğer ilgili veritabanına Query Analyzer ile bağlıysanız, aşağıdaki
sorguyu çalıştırarak veritabanını oluşturan herbir dosyayı ek bilgiler
ile listeleyebilirsiniz.
fileid | groupid | size | maxsize | growth | status | perf | name | filename |
1 | 1 | 416 | -1 | 10 | 1048579 | 0 | Forums | C:\Program Files\Microsoft SQL Server\MSSQL\data\Forums.mdf |
2 | 0 | 256 | -1 | 10 | 1097794 | 0 | Forums_log | C:\Program Files\Microsoft SQL Server\MSSQL\data\Forums_log.ldf |
Burada gördüğümüz size ifadeleri page size yani 8 kb cinsinden ifade edilmiştir. Yani .mdf dosyamızın büyüklüğü gerçekte 3.328 KB ve .ldf dosyamızın büyüklüğü 2.048 KB'tır.
Aşağıdaki DBCC SHRINKDATABASE ifadesinden sonra ise dönen değerler aşağıdaki
gibidir.
DbId | FileId | CurrentSize | MinimumSize | UsedPages | EstimatedPages |
11 | 1 | 384 | 96 | 376 | 376 |
11 | 2 | 63 | 63 | 56 | 56 |
Burada fiziksel olarak .mdf dosyamızın boyutunun 8 * 384 (3.072 KB) ve .ldf
dosyamızın boyutunun 8 * 63 kb (504 KB) olduğunu görebiliriz.
Eğer veritabanı transaction log dosyanızın çok büyüdüğünü düşünüyorsanız
ve çeşitli nedenlerden dolayı transaction log dosyanızın (.ldf) boyutunu küçültmeniz
gerekiyorsa DBCC SHRINKFILE komutunu kullanabilirsiniz.
Örneğin;
komutu ile Forums_log, transaction log dosyasını ilk tanımlanırken
verilen varsayılan büyüklüğe küçültür.
komutu ile log dosyasının boyutunu 2 MB büyüklüğe küçültülmesini
isteyebiliriz.Büyüklük parametresi MB cinsinden tam sayı ile ifade edilir.
komutu ile log dosyası 2 MB büyüklüğe küçültüldükten sonra elde
edilen boş kısmın işletim sistemi kullanımına açılmamasını sağlar. Boş
kısım yine log dosyasında kalır.
DBCC SHRINKFILE kullanımında aşağıdaki gibi bir durumla da karşılaşabilirsiniz.
komutu ile elde edeceğiniz CurrentSize değeri 352 (2.816 KB) olsun ve
fiziksel olarak bir küçülme olmadığını da gördünüz diyelim.
komutunu çalıştırdıktan sonra ilk çalıştırdığınız
komutu ile bu sefer fiziksel bir küçülmeyi ifade eden 256 (2.048 KB) gibi
bir CurrentSize değerine ulaşabilirsiniz