Aracılığıyla paylaş


Dosyayı küçültme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da bir veri veya günlük dosyasını küçültme işlemi açıklanmaktadır.

Veri dosyalarını küçültmek, veri sayfalarını dosyanın sonundan dosyanın önüne yakın boş alana taşıyarak alanı kurtarır. Dosyanın sonunda yeterli boş alan oluşturulduğunda, dosyanın sonundaki veri sayfaları serbest bırakılabilir ve dosya sistemine döndürülebilir.

Uyarı

  • Dosyayı küçültmek için taşınan veriler, dosyadaki kullanılabilir herhangi bir konuma dağıtılabilir. Bu, dizin parçalanmasına neden olur ve dizin aralığını arayan sorguların performansını yavaşlatabilir. Parçalanmayı ortadan kaldırmak için, daraltıldıktan sonra dosyadaki dizinleri yeniden oluşturmayı göz önünde bulundurun.
  • Küçültme işlemleri normal bir bakım işlemi olarak kabul edilmemelidir. Düzenli, yinelenen iş işlemleri nedeniyle büyüyen veri ve günlük dosyaları için küçültme işlemleri gerekmez.

Sınırlama

  • Birincil veri dosyası, model veritabanındaki birincil dosyanın boyutundan daha küçük olamaz.

Öneri

  • Küçültme işlemi en çok büyük DELETE deyimi, kesme tablosu veya bırakma tablosu işlemi gibi büyük miktarda kullanılmayan depolama alanı oluşturan bir işlemden sonra etkilidir.

  • Çoğu veritabanı, normal günlük işlemler için kullanılabilir boş alan gerektirir. Bir veritabanı dosyasını tekrar tekrar küçültür ve veritabanı boyutunun yeniden büyüdüğünü fark ederseniz, bu normal işlemler için boş alanın gerekli olduğunu gösterir. Bu gibi durumlarda veritabanı dosyasının sürekli daraltılması boşa harcanan bir işlemdir. Veritabanı dosyasını büyütmek için gereken otomatik büyütme olayları performansı engeller.

  • Dosyayı küçültmek için taşınan veriler, dosyadaki kullanılabilir herhangi bir konuma dağıtılabilir. Bu, dizin parçalanmasına neden olur ve dizin aralığını arayan sorguların performansını yavaşlatabilir. Parçalanmayı ortadan kaldırmak için, daraltıldıktan sonra dosyadaki dizinleri yeniden oluşturmayı göz önünde bulundurun.

  • Belirli bir gereksiniminiz yoksa AUTO_SHRINK veritabanı seçeneğini ON olarak ayarlamayın.

Açıklamalar

Devam eden küçültme işlemleri veritabanındaki diğer sorguları engelleyebilir ve devam eden sorgular tarafından engellenebilir. SQL Server 2022'de (16.x) kullanıma sunulan dosya küçültme işlemlerinin bir WAIT_AT_LOW_PRIORITY seçeneği vardır. Bu özellik, DBCC SHRINKDATABASE ve DBCC SHRINKFILEiçin yeni bir ek seçenektir. Yeni bir küçültme işlemi WAIT_AT_LOW_PRIORITY modunda, devam eden uzun süreli bir sorgu nedeniyle gerekli kilitleri alamıyorsa, küçültme işlemi bir dakika sonra zaman aşımına uğrar ve sessizce tamamlanır, böylece diğer sorguların engellenmesi önlenir. WAIT_AT_LOW_PRIORITY veri dosyalarına (.mdf & .ndf) uygulanır. İşlem günlüğü dosyaları için geçerli değildir. Daha fazla bilgi için bkz. DBCC SHRINKFILE (Transact-SQL).

İzinler

sysadmin sabit sunucu rolüne veya db_owner sabit veritabanı rolüne üyelik gerektirir.

Verileri veya günlük dosyasını küçültmek için SQL Server Management Studio'yu (SSMS) kullanma

  1. Nesne Gezginisql server veritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. veritabanları genişletin ve küçültmek istediğiniz veritabanına sağ tıklayın.

  3. Görevlerüzerine gelin, Küçültüzerine gelin ve ardından Dosyalaröğesini seçin.

    Veritabanı
    Seçili veritabanının adını görüntüler.

    Dosya türü
    Dosyanın dosya türünü seçin. Kullanılabilir seçenekler Veri ve Günlük dosyalarıdır. Varsayılan seçim veri . Farklı bir dosya grubu türü seçildiğinde, diğer alanlardaki seçimler buna göre değişir.

    Dosya Grubu
    Yukarıdaki seçili Dosya türüyle ilişkili Dosya grupları listesinden bir dosya grubu seçin. Farklı bir dosya grubu seçildiğinde, diğer alanlardaki seçimler buna göre değişir.

    Dosya adı
    Seçili dosya grubunun ve dosya türünün kullanılabilir dosyaları listesinden bir dosya seçin.

    Konum
    Seçili durumdaki dosyanın tam yolunu görüntüler. Yol düzenlenemez, ancak panoya kopyalanabilir.

    Şu anda ayrılmış alan
    Veri dosyaları için mevcut ayrılmış alanı gösterir. Günlük dosyaları için, DBCC SQLPERF(LOGSPACE)çıktısından hesaplanan mevcut ayrılmış alanı görüntüler.

    Mevcut boş alan
    Veri dosyaları için, DBCC SHOWFILESTATS(fileid)çıkışından hesaplanan geçerli kullanılabilir boş alanı görüntüler. Günlük dosyaları için, DBCC SQLPERF(LOGSPACE)çıkışından hesaplanan geçerli kullanılabilir boş alanı görüntüler.

    Kullanılmayan alanı serbest bırakma
    Dosyalarda kullanılmayan herhangi bir alanın işletim sisteminde serbest bırakılmasına neden olur ve dosyayı ayrılan son boyuta küçülterek veri taşımadan dosya boyutunu küçültün. Ayrılmamış sayfalara satırları yeniden konumlandırma girişiminde bulunulmaz.

    Kullanılmayan alan bırakmadan önce sayfaları yeniden düzenleme
    Hedef dosya boyutunu belirten DBCC SHRINKFILE yürütmeye eşdeğerdir. Bu seçenek belirlendiğinde, kullanıcının Dosyayı küçült kutusunda bir hedef dosya boyutu belirtmesi gerekir.

    Dosyayı küçült
    Küçültme işlemi için hedef dosya boyutunu belirtir. Boyut, geçerli ayrılan alandan küçük veya dosyaya ayrılan toplam kapsamlardan fazla olamaz. Odak değiştirildikten veya araç çubuğundaki düğmelerden herhangi biri seçildiğinde minimum veya maksimumun ötesinde bir değer girildiğinde en küçük veya en büyük değere geri döner.

    Verileri aynı dosya grubundaki diğer dosyalara geçirerek Boş dosya
    Belirtilen dosyadaki tüm verileri geçirin. Bu seçenek, ALTER DATABASE deyimi kullanılarak dosyanın bırakılmasına izin verir. Bu seçenek, DBCC SHRINKFILE seçeneğiyle EMPTYFILE yürütmeye eşdeğerdir. EMPTYFILE, Azure SQL Veritabanı veya Azure SQL Veritabanı Hiper Ölçek'te desteklenmez.

  4. Dosya türünü ve dosya adını seçin.

  5. İsteğe bağlı olarak, Kullanılmayan alanı serbest bırak onay kutusunu seçin.

    Bu seçeneğin belirtilmesi, dosyadaki kullanılmayan tüm boşlukların işletim sisteminde serbest bırakılmasına neden olur ve dosyayı ayrılan son ölçüde küçültür. Bu, hiçbir veri taşımadan dosya boyutunu küçültür.

  6. İsteğe bağlı olarak, kullanılmayan alanı bırakmadan önce dosyaları yeniden düzenle onay kutusunu seçin. Bu seçilirse, dosya boyutu değerine küçültülmelidir. Varsayılan olarak seçenek temizlenir.

    Bu seçeneğin belirtilmesi, dosyadaki kullanılmayan tüm boşlukların işletim sisteminde serbest bırakılmasına neden olur ve satırları ayrılmamış sayfalara yeniden konumlandırmaya çalışır.

  7. İsteğe bağlı olarak, veritabanı küçültüldikten sonra veritabanı dosyasında bırakılacak en yüksek boş alan yüzdesini girin. İzin verilen değerler 0 ile 99 arasındadır. Bu seçenek yalnızca Kullanılmayan alan bırakmadan önce dosyaları yeniden düzenle etkinleştirildiğinde kullanılabilir.

  8. İsteğe bağlı olarak, verileri aynı dosya grubu diğer dosyalara geçirerek Boş dosya onay kutusunu seçin.

    Bu seçeneğin belirtilmesi, belirtilen dosyadaki tüm verileri dosya grubundaki diğer dosyalara taşır. Boş dosya daha sonra silinebilir. Bu seçenek, EMPTYFILE seçeneğiyle DBCC SHRINKFILE yürütmeyle aynıdır.

  9. Tamam'ı seçin.

Verileri veya günlük dosyasını küçültmek için Transact-SQL kullanma

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standard çubuğundan Yeni Sorguöğesini seçin.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Executeöğesini seçin. Bu örnekte veritabanındaki adlı DataFile1 veri dosyasının boyutunu 7 MB'a küçültmek için UserDB kullanılır.

USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO