Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure 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 SHRINKFILE
gibi 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ğiniON
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 SHRINKFILE
iç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
Nesne Gezgini, SQL Server Veritabanı Altyapısı örneğine bağlanın ve bu örneği genişletin.
Veritabanlarıgenişletin ve küçültmek istediğiniz veritabanına sağ tıklayın.
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ğiyleTRUNCATEONLY
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.
tamamseçin.
Transact-SQL kullanma
Veritabanını küçültme
Veritabanı Altyapısı'na bağlanın.
** Standard çubuğundan Yeni Sorgu'ü seçin.
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
UserDB
10
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.
İlgili içerik
- Tempdb veritabanını küçültme
- SQL Server'de otomatik büyütme ve otomatik küçültme ayarlarıyla ilgili dikkat edilmesi gerekenler
- Veritabanı Dosyaları ve Dosya Grupları
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- Veritabanından Veri veya Günlük Dosyalarını Silme
- Dosyayı küçültme
- Azure SQL Veritabanı veritabanları için dosya alanını yönetme