Aracılığıyla paylaş


Veritabanını 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'de Nesne Gezgini'ni kullanarak SQL Server'da veritabanı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ırlamalar

  • Veritabanı, veritabanının en küçük boyutundan daha küçük olamaz. En küçük boyut, veritabanı ilk oluşturulduğunda belirtilen boyut veya DBCC SHRINKFILEgibi dosya boyutu değiştirme işlemi kullanılarak ayarlanan son açık boyuttur. Örneğin, bir veritabanı başlangıçta 10 MB boyutunda oluşturulduysa ve 100 MB'a yükseltildiyse, veritabanındaki tüm veriler silinmiş olsa bile veritabanının en küçük boyutu 10 MB'a düşürülebilir.

  • Veritabanı yedeklenirken veritabanını küçültemezsiniz. Buna karşılık, veritabanındaki bir küçültme işlemi devam ederken veritabanını yedekleyemezsiniz.

Öneri

  • Veritabanında mevcut boş (ayrılmamış) alan miktarını görüntülemek. Daha fazla bilgi için Bir veritabanı için veri ve günlük alanı bilgilerini görüntüleme bölümüne bakın.

  • Veritabanını küçültmeyi planlarken aşağıdaki bilgileri göz önünde bulundurun:

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

    • Çoğu veritabanı, normal günlük işlemler için kullanılabilir boş alan gerektirir. Bir veritabanı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ını sürekli küçültmek boşa harcanan bir işlemdir. Veritabanı dosyalarını büyütmek için gereken otomatik büyütme olayları performansı engeller.

    • Küçültme işlemi, veritabanındaki dizinlerin parçalanma durumunu korumaz ve genellikle parçalanmayı bir dereceye kadar artırır. Bu, veritabanını tekrar tekrar küçültmemek için başka bir nedendir.

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

İzinler

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

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 veritabanı 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. Daha fazla bilgi için bkz. DBCC SHRINKDATABASE .

Azure SQL Veritabanı'na özgü dosya yönetimi ve küçültme işlemleri hakkında bilgi için bkz. Azure SQL Veritabanıveritabanları için dosya alanını yönetme.

SQL Server Management Studio kullanma

Şunlar için geçerlidir: SQL Server, Azure SQL Yönetilen Örneği

Veritabanını küçültme

  1. Nesne Gezgini, SQL Server Veritabanı Altyapısı ö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 Veritabanıseçin.

    • Veritabanı

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

    • Geçerli ayrılan alan

      Seçili veritabanı için kullanılan ve kullanılmayan toplam alanı görüntüler.

    • Kullanılabilir boş alan

      Seçili veritabanının günlük ve veri dosyalarındaki boş alanın toplamını görüntüler.

    • Kullanılmayan alan bırakmadan önce dosyaları yeniden düzenleme

      Bu seçeneğin seçilmesi, hedef yüzde seçeneğinin belirtilmesiyle DBCC SHRINKDATABASE eşdeğerdir. Bu seçeneği temizlemek, DBCC SHRINKDATABASE seçeneğiyle TRUNCATEONLY yürütmeye eşdeğerdir. Varsayılan olarak, iletişim kutusu açıldığında bu seçenek seçilmez. Bu seçenek belirlenirse, kullanıcının bir hedef yüzde seçeneği belirtmesi gerekir.

    • Daraltıldıktan sonra dosyalardaki maksimum boş alan

      Veritabanı küçültüldikten sonra veritabanı dosyalarında bırakılacak en fazla boş alan yüzdesini girin. İzin verilen değerler 0 ile 99 arasındadır.

  4. tamamseçin.

Transact-SQL kullanma

Veritabanını küçültme

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

  2. ** Standard çubuğundan Yeni Sorgu'ü 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 veri ve günlük dosyalarının boyutunu küçültmek ve veritabanında boş alan yüzdesine izin vermek için UserDB10 kullanılır.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Veritabanını daraltdıktan sonra

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. Daha fazla bilgi için bkz. Bir dizini yeniden oluşturma.