Database Shrink, bir veri tabanına ait veri veya günlük dosyalarının fiziksel boyutunu küçülterek kullanılmayan alanın işletim sistemine geri verilmesini sağlayan işlemdir. Türkçede “veri tabanı küçültme” olarak ifade edilebilir.
Veri tabanı sistemleri, verilerin saklanabilmesi için disk üzerinde belirli büyüklükte dosyalar oluşturur. Bu dosyaların bir bölümü aktif veriler tarafından kullanılırken kalan bölümü gelecekte eklenecek veriler için boş alan olarak tutulabilir.
Örneğin, 1 GB büyüklüğündeki bir veri tabanı dosyasında 400 MB veri bulunuyorsa dosya disk üzerinde 1 GB yer kaplamaya devam eder. Ancak kalan 600 MB alan kayıp değildir. Veri tabanı bu alanı yeni kayıtlar ve işlemler için yeniden kullanabilir.
Bu nedenle veri tabanı dosyasında boş alan bulunması, doğrudan performans kaybı yaşandığı anlamına gelmez. Aksine, yeterli boş alan bulunması veri tabanının sürekli olarak büyütülmesi ihtiyacını azaltabilir.
Veri tabanı küçültme işlemi, dosya içerisindeki veri sayfalarını yeniden konumlandırarak dosyanın son bölümündeki kullanılmayan alanı serbest bırakır. SQL Server ortamında bu işlem DBCC SHRINKFILE veya DBCC SHRINKDATABASE komutlarıyla gerçekleştirilebilir. Microsoft, küçültme komutlarının yalnızca gerekli durumlarda kullanılmasını önerir.
Database Shrink işlemi genellikle büyük miktarda verinin kalıcı olarak silinmesi, bir veri taşıma çalışmasının tamamlanması veya veri tabanının gelecekte aynı kapasiteye tekrar ihtiyaç duymayacağının belirlenmesi gibi istisnai durumlarda uygulanır.
Bu işlemin düzenli bir bakım veya performans artırma yöntemi olarak kullanılması önerilmez. Küçültülen dosyanın yeniden büyümesi gerekirse ek kaynak tüketimi ve performans sorunları ortaya çıkabilir.
Database Shrink işlemi sırasında veri sayfalarının taşınması, indeks parçalanmasına neden olabilir. Bu durum bazı sorguların ve veri erişim işlemlerinin performansını olumsuz etkileyebilir. Microsoft, dosya parçalanmasını azaltmak için veri tabanı dosyalarının gereksiz yere küçültülmemesini önerir.
İşlem ayrıca önemli miktarda işlemci, disk ve giriş-çıkış kaynağı kullanabilir. Bu nedenle büyük veri tabanlarında küçültme çalışmaları yoğun kullanım saatleri dışında planlanmalıdır.
Database Shrink, kullanılmayan kayıtları veya eklentileri otomatik olarak temizleyen bir işlem değildir. Verilerin silinmesi, arşivlenmesi ve saklama politikalarının uygulanması ayrı süreçlerdir. Shrink işlemi yalnızca daha önce boşaltılmış alanın fiziksel dosyadan çıkarılarak işletim sistemine geri verilmesini sağlar.
İşlem öncesinde güncel bir veri tabanı yedeğinin bulunduğu doğrulanmalıdır. Küçültme tamamlandıktan sonra indeks parçalanması, dosya boyutları, boş alan oranları ve sorgu performansı kontrol edilmelidir.
Sonuç olarak Database Shrink, rutin olarak uygulanması gereken bir optimizasyon yöntemi değil, belirli koşullarda disk alanını geri kazanmak amacıyla kullanılan kontrollü bir veri tabanı yönetim işlemidir.