Küçültmek burada belirtilen nedenlerden dolayı gerçekten tehlikelidir. Jimbo'nun cevabı ile John'un cevabı arasında mutlu bir ortam var ... Veritabanınızı küçültmek isteyip istemediğinizi her zaman ciddiye almalısınız.
İdeal bir dünyada - DB'nizi büyümek için bol miktarda boş alan oluşturacaksınız. Bu veritabanına "Doğru Boyutlandırma" diyorum. Bu boş alanın orada olmasına izin verirsiniz ve geri vermek ve toplam bedeninizi kullanılmış bedeninizde doğru tutmak için çabalamazsınız .. Neden? Çünkü veritabanınız sonunda tekrar büyüyecek .. Sonra tekrar küçüleceksin .. Ve bu korkunç yararsız shrink paterninde sıkışıp kalacaksınız, ardından büyümeyi izleyeceksiniz - ve tüm zaman boyunca, bir kaçının işaret ettiği gibi endeks parçalanma oranını arttırmak.
İnsanları " O küçültme düğmesine dokunma! " Ya uyardığım bir yerde blog yazdım ama bazen ... Bazen buna ihtiyacın var. Eğer büyük bir veritabanınız varsa, sadece önemli bir alan boşaltın ve tekrar tekrar büyümeyi beklemeyin - peki daha sonra yeniden oluşturma yoluyla endeks fragmantasyonunuzu halledebildiğiniz sürece tek seferlik bir işlem olarak küçülmeyi düşünmek sorun değil onlar. Büzülme işlemi zaman alabilir, bu yüzden büzüşen koşu fiyatını ödeyebileceğiniz bir süre için plan yapmak istersiniz. Boş bir DB oluşturma ve içine veri kopyalama yaklaşımı işe yarıyor - ancak bu daha büyük veritabanlarında ve birçok veride çok zor olabilir.
Gelecekte normal kullanım ve büyüme modelleriyle o boşluğu tekrar DB'ye eklemeyi planlıyorsanız, o zaman boşluğu orada bırakmak isteyebilirsiniz.
Ayrıca
İşlem günlüğünüzü "temizlediğinizi" söylediniz. Bunu nasıl yaptığınızı bilmek isterdim ama paylaştığım yazıyı okuduğunuzda ve serideki diğer kişiler işlem günlüğü yönetimi hakkında bazı ipuçları göreceksiniz. Ancak, kısacası - Tam Kurtarma modundaysanız, günlüğün kendisini yeniden kullanmasını sağlamak için düzenli kayıt yedekleme yapıyor olmalısınız. Aksi halde - Tam Moddayken hiçbir günlük yedeği olmadan - günlük dosyası büyümeye ve büyümeye ve büyümeye devam eder ve her zaman yaptığınız şeyi kaydeder çünkü SQL’e yalnızca çöküş kurtarma için bu günlüğü korumak istemediğinizi değil Kurtarma amacıyla zamanın belirli bir noktasına kadar kurtarmak için işlemleri geri almak / işlemleri geri almak için el ile yedekleme ... Basit ve günlüklerin aşırı büyüdüğünü görmek içinBEGIN TRAN ... do work.... COMMIT TRAN
ya da sadece büyük bir DELETE
açıklama yaptıysanız ve gizli bir işlemle tüm veri karmaşasını sildiyseniz.
Ayrıca dosya sisteminizde bu boş alanı aradığınızı farz ediyorum. Eğer SQL içinde ve sahip olduğunuz o büyük dosyada arıyorsanız, işlemden hemen sonra bakarsanız, tamamlamak için hayalet temizleme bekliyor olabilirsiniz. Paul Randal, Ghost Cleanup hakkında blog yazdı .