Zmniejszanie pliku
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym artykule opisano sposób zmniejszania danych lub pliku dziennika w programie SQL Server przy użyciu programu SQL Server Management Studio lub Języka Transact-SQL.
Zmniejszanie plików danych odzyskuje miejsce, przenosząc strony danych z końca pliku do wolnego miejsca bliżej przodu pliku. Po utworzeniu wystarczającej ilości wolnego miejsca na końcu pliku, strony danych na końcu pliku mogą zostać zwolnione i zwrócone do systemu plików.
Ograniczenia
- Nie można zmniejszyć rozmiaru pliku podstawowego w bazie danych
model
.
Zalecenia
Operacja zmniejszania jest najbardziej efektywna po operacji, która tworzy dużą ilość nieużywanego miejsca do magazynowania, na przykład dużą instrukcję DELETE, obcięcie tabeli lub operację upuszczania tabeli.
W przypadku codziennych operacji większość baz danych wymaga wolnego miejsca. Jeśli wielokrotnie zmniejszasz plik bazy danych i zauważasz, że rozmiar bazy danych ponownie wzrośnie, oznacza to, że wolne miejsce jest wymagane do regularnych operacji. W takich przypadkach wielokrotne zmniejszanie pliku bazy danych to zmarnowana operacja. Zdarzenia automatycznego zwiększania rozmiaru pliku bazy danych są niezbędne, ale utrudniają wydajność.
Dane przenoszone w celu zmniejszenia pliku mogą być rozproszone do dowolnej dostępnej lokalizacji w pliku. Powoduje to fragmentację indeksu i może spowolnić wydajność zapytań, które wyszukują zakres indeksu. Aby wyeliminować fragmentację, rozważ odbudowanie indeksów w pliku po zmniejszeniu.
Jeśli nie masz określonego wymagania, nie ustawiaj opcji AUTO_SHRINK bazy danych na WŁĄCZONE.
Uwagi
Operacje zmniejszania w toku mogą blokować inne zapytania w bazie danych i mogą być blokowane przez zapytania już w toku. Wprowadzona w SQL Server 2022 (16.x) operacja zmniejszania plików ma opcję WAIT_AT_LOW_PRIORITY. Ta funkcja jest nową dodatkową opcją dla DBCC SHRINKDATABASE
i DBCC SHRINKFILE
. Jeśli nowa operacja zmniejszania w trybie WAIT_AT_LOW_PRIORITY nie może uzyskać niezbędnych blokad z powodu długotrwałego zapytania już w toku, operacja zmniejszania po jednej minucie wyłączy się i dyskretnie zakończy, zapobiegając blokowaniu innych zapytań. WAIT_AT_LOW_PRIORITY dotyczy plików danych (.mdf, &, .ndf). Nie ma zastosowania do plików dziennika transakcji. Aby uzyskać więcej informacji, zobacz DBCC SHRINKFILE.
Uprawnienia
Wymaga członkostwa w sysadmin stałej roli serwera lub stałej roli bazy danych db_owner.
Korzystanie z programu SQL Server Management Studio (SSMS)
Zmniejszanie danych lub pliku dziennika przy użyciu programu SSMS
W Eksploratorze Obiektów , połącz się z wystąpieniem silnika bazy danych SQL Server, a następnie rozwiń je.
Rozwiń Bazy danych, a następnie kliknij prawym przyciskiem myszy bazę danych, którą chcesz skurczyć.
Wskaż Tasks, wskaż Zmniejsz, a następnie wybierz Files.
Baza danych
Wyświetla nazwę wybranej bazy danych.typ pliku
Wybierz typ pliku dla pliku. Dostępne opcje to pliki Data i Log. Domyślnym wyborem jest Dane. Wybranie innego typu grupy plików zmienia wybrane opcje w innych polach.grupa plików
Wybierz grupę plików z listy grup plików skojarzonych z wybranym typem pliku powyżej. Wybranie innej grupy plików zmienia wybrane opcje w innych polach.nazwa pliku
Wybierz plik z listy dostępnych plików wybranej grupy plików i typu pliku.lokalizacja
Wyświetla pełną ścieżkę do aktualnie wybranego pliku. Ścieżki nie można edytować, ale można ją skopiować do schowka.obecnie przydzielone miejsce
W przypadku plików danych wyświetla bieżące przydzielone miejsce. W przypadku plików dziennika wyświetla bieżące przydzielone miejsce obliczone z danych wyjściowychDBCC SQLPERF(LOGSPACE)
.Dostępne wolne miejsce
W przypadku plików danych wyświetla bieżące dostępne wolne miejsce obliczone na podstawie danych wyjściowychDBCC SHOWFILESTATS(fileid)
. W przypadku plików dziennika wyświetla bieżące dostępne wolne miejsce obliczone na podstawie danych wyjściowychDBCC SQLPERF(LOGSPACE)
.Zwolnij nieużywane miejsce
Spowodowanie zwolnienia dowolnego nieużywanego miejsca w plikach w systemie operacyjnym i zmniejszenie pliku do ostatniego przydzielonego zakresu, zmniejszając rozmiar pliku bez przenoszenia żadnych danych. Nie podjęto próby przeniesienia wierszy do nieprzydzielonych stron.Zorganizuj strony przed zwolnieniem wolnej przestrzeni
Odpowiednik wykonaniaDBCC SHRINKFILE
z określeniem rozmiaru pliku docelowego. Po wybraniu tej opcji użytkownik musi określić docelowy rozmiar pliku w polu Zmniejszenie pliku do.Zmniejsz plik do
Określa rozmiar pliku docelowego dla operacji zmniejszania. Rozmiar nie może być mniejszy niż bieżące przydzielone miejsce lub więcej niż łączna liczba zakresów przydzielonych do pliku. Wprowadzenie wartości przekraczającej wartość minimalną lub maksymalną spowoduje przywrócenie wartości minimalnej lub maksymalnej po zmianie fokusu lub wybraniu któregokolwiek z przycisków na pasku narzędzi.Opróżnij plik, migrując dane do innych plików w tej samej grupie plików
Przeprowadź migrację wszystkich danych z określonego pliku. Ta opcja umożliwia usunięcie pliku przy użyciu instrukcji ALTER DATABASE. Opcja ta jest równoważna wykonaniuDBCC SHRINKFILE
z opcjąEMPTYFILE
.EMPTYFILE
nie jest obsługiwana w usłudze Azure SQL Database ani w hiperskala usługi Azure SQL Database.Wybierz typ pliku i nazwę pliku.
Opcjonalnie zaznacz pole wyboru Zwolnij nieużywane miejsce.
Wybranie tej opcji powoduje zwolnienie dowolnego nieużywanego miejsca w pliku w systemie operacyjnym i zmniejsza plik do ostatniego przydzielonego zakresu. Zmniejsza to rozmiar pliku bez przenoszenia danych.
Opcjonalnie zaznacz pole wyboru Zreorganizowanie plików przed zwolnieniem nieużywanego miejsca. Jeśli to zostanie wybrane, należy określić wartość zmniejszenia pliku na. Domyślnie opcja jest wyczyszczona.
Wybranie tej opcji powoduje zwolnienie dowolnego nieużywanego miejsca w pliku w systemie operacyjnym i próba przeniesienia wierszy do nieprzydzielonych stron.
Opcjonalnie wprowadź maksymalny procent wolnego miejsca do pozostawienia w pliku bazy danych po usunięciu bazy danych. Dopuszczalne wartości to od 0 do 99. Ta opcja jest dostępna tylko wtedy, gdy Zreorganizowanie plików przed zwolnieniem nieużywanego miejsca jest włączona.
Opcjonalnie zaznacz pole wyboru Pusty plik, migrując dane do innych plików w tej samej grupie plików.
Wybranie tej opcji powoduje przeniesienie wszystkich danych z określonego pliku do innych plików w grupie plików. Następnie można usunąć pusty plik. Ta opcja jest taka sama jak wykonywanie
DBCC SHRINKFILE
z opcją EMPTYFILE.Wybierz pozycję OK.
Użyj Transact-SQL
Zmniejszanie danych lub pliku dziennika przy użyciu Transact-SQL
Połącz się z silnikiem bazy danych.
Na pasku Standardowa wybierz pozycję Nowe zapytanie.
Skopiuj poniższy przykład i wklej go w oknie zapytania, a następnie wybierz pozycję Wykonaj. W tym przykładzie użyto DBCC SHRINKFILE, aby zmniejszyć rozmiar pliku danych o nazwie
DataFile1
w bazie danychUserDB
do 7 MB.
USE UserDB;
GO
DBCC SHRINKFILE (DataFile1, 7);
GO
Powiązana zawartość
- Rozważania dotyczące ustawień automatycznego zwiększania i automatycznego zmniejszania w programie SQL Server
- pliki bazy danych i grupy plików
- sys.databases (Transact-SQL)
- sys.database_files (Transact-SQL)
- FILE_ID (Transact-SQL)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- usuwanie danych lub plików dziennika z bazy danych
- Zmniejszanie bazy danych