Zmniejszanie bazy danych
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
W tym artykule opisano sposób zmniejszania bazy danych w programie SQL Server przy użyciu Eksploratora obiektów w programie SQL Server Management Studio lub 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ć dealokowane i zwrócone do systemu plików.
Ograniczenia i ograniczenia
Nie można zmniejszyć bazy danych niż minimalny rozmiar bazy danych. Minimalny rozmiar to rozmiar określony podczas tworzenia bazy danych lub ostatni jawny rozmiar ustawiony przy użyciu operacji zmiany rozmiaru pliku, takiej jak
DBCC SHRINKFILE
. Jeśli na przykład baza danych została pierwotnie utworzona o rozmiarze 10 MB i wzrosła do 100 MB, najmniejszy rozmiar bazy danych można zmniejszyć do 10 MB, nawet jeśli wszystkie dane w bazie danych zostały usunięte.Nie można zmniejszyć bazy danych podczas tworzenia kopii zapasowej bazy danych. Z drugiej strony nie można utworzyć kopii zapasowej bazy danych, gdy trwa operacja zmniejszania bazy danych.
Zalecenia
Aby wyświetlić bieżącą ilość wolnego (nieprzydzielonego) miejsca w bazie danych. Aby uzyskać więcej informacji, zobacz informacje o wyświetlaniu danych oraz przestrzeni dziennika dla bazy danych
Podczas planowania zmniejszenia bazy danych należy wziąć pod uwagę następujące informacje:
Operacja zmniejszania jest najbardziej efektywna po operacji, która tworzy dużą ilość nieużywanego miejsca, na przykład znaczącej operacji DELETE, skrócenia tabeli lub usunięcia tabeli.
W przypadku codziennych operacji większość baz danych wymaga wolnego miejsca. Jeśli wielokrotnie zmniejszasz bazę 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 bazy danych to zmarnowana operacja. Zdarzenia automatycznego zwiększania rozmiaru niezbędne do zwiększenia liczby plików bazy danych utrudniają wydajność.
Operacja kurczenia nie zachowuje stanu fragmentacji indeksów w bazie danych i zazwyczaj zwiększa fragmentację do pewnego stopnia. Jest to kolejny powód, aby nie wielokrotnie zmniejszać bazy danych.
Jeśli nie masz określonego wymagania, nie ustawiaj opcji AUTO_SHRINK bazy danych na "Włączona".
uprawnienia
Wymaga członkostwa w stałej roli serwera sysadmin lub w stałej roli bazy danych db_owner.
Uwagi
Operacje zmniejszania w toku mogą blokować inne zapytania w bazie danych i mogą być blokowane przez zapytania już w toku. W programie SQL Server 2022 (16.x) wprowadzono opcję WAIT_AT_LOW_PRIORITY do operacji zmniejszania bazy danych. 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 ostatecznie przerywa po jednej minucie i dyskretnie zakończy działanie, uniemożliwiając zablokowanie innych zapytań. Aby uzyskać więcej informacji, zobacz DBCC SHRINKDATABASE.
Aby uzyskać informacje na temat zarządzania plikami i zmniejszania operacji specyficznych dla usługi Azure SQL Database, zobacz Zarządzanie miejscem na pliki dla baz danych w usłudze Azure SQL Database.
Korzystanie z programu SQL Server Management Studio
Dotyczy: SQL Server, Azure SQL Managed Instance
Zmniejszanie bazy danych
W eksploratorze obiektów połącz się z wystąpieniem aparatu bazy danych programu SQL Server, a następnie rozwiń to wystąpienie.
Rozwiń węzeł Bazy danych, a następnie kliknij prawym przyciskiem myszy bazę danych, którą chcesz pomniejszyć.
Wskaż Tasks, wskaż Shrink, a następnie wybierz Database.
Baza danych
Wyświetla nazwę wybranej bazy danych.
bieżące przydzielone miejsce
Wyświetla łączną ilość używanego i nieużywanego miejsca dla wybranej bazy danych.
Dostępne wolne miejsce
Wyświetla sumę wolnego miejsca w plikach dziennika i danych wybranej bazy danych.
Zreorganizuj pliki przed zwolnieniem nieużywanego miejsca
Wybranie tej opcji jest równoważne wykonywaniu polecenia DBCC SHRINKDATABASE określającą opcję procentu docelowego. Wyczyszczenie tej opcji jest równoważne wykonywaniu polecenia DBCC SHRINKDATABASE z opcją TRUNCATEONLY. Domyślnie ta opcja nie jest wybierana po otwarciu okna dialogowego. Jeśli ta opcja jest zaznaczona, użytkownik musi określić opcję procentu docelowego.
Maksymalna ilość wolnego miejsca w plikach po zmniejszeniu
Wprowadź maksymalny procent wolnego miejsca, który ma pozostać w plikach bazy danych po zmniejszeniu rozmiaru bazy danych. Dopuszczalne wartości to od 0 do 99.
Wybierz pozycję OK.
Użyj Transact-SQL
Zmniejszanie bazy danych
Połącz się z silnikiem bazy danych.
Na pasku Standard 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 SHRINKDATABASE, aby zmniejszyć rozmiary plików danych i dziennika w bazie danych
UserDB
oraz zapewnić10
procent wolnego miejsca w bazie danych.
DBCC SHRINKDATABASE (UserDB, 10);
GO
Po zmniejszeniu bazy danych
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ż odbudowę indeksów w pliku po jego zmniejszeniu. Aby uzyskać więcej informacji, zobacz Ponowne kompilowanie indeksu.
Powiązana zawartość
- Zmniejszanie bazy danych tempdb
- Zagadnienia 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)
- DBCC SHRINKDATABASE (Transact-SQL)
- DBCC SHRINKFILE (Transact-SQL)
- usuwanie danych lub plików dziennika z bazy danych
- Zmniejszanie pliku
- Zarządzanie miejscem na pliki dla baz danych w usłudze Azure SQL Database