Udostępnij za pośrednictwem


Zmniejszanie pliku

Dotyczy:SQL ServerAzure SQL DatabaseAzure 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

  1. W Eksploratorze Obiektów , połącz się z wystąpieniem silnika bazy danych SQL Server, a następnie rozwiń je.

  2. Rozwiń Bazy danych, a następnie kliknij prawym przyciskiem myszy bazę danych, którą chcesz skurczyć.

  3. 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ściowych DBCC SQLPERF(LOGSPACE).

    Dostępne wolne miejsce
    W przypadku plików danych wyświetla bieżące dostępne wolne miejsce obliczone na podstawie danych wyjściowych DBCC SHOWFILESTATS(fileid). W przypadku plików dziennika wyświetla bieżące dostępne wolne miejsce obliczone na podstawie danych wyjściowych DBCC 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 wykonania DBCC 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 wykonaniu DBCC SHRINKFILE z opcją EMPTYFILE. EMPTYFILE nie jest obsługiwana w usłudze Azure SQL Database ani w hiperskala usługi Azure SQL Database.

  4. Wybierz typ pliku i nazwę pliku.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. Wybierz pozycję OK.

Użyj Transact-SQL

Zmniejszanie danych lub pliku dziennika przy użyciu Transact-SQL

  1. Połącz się z silnikiem bazy danych.

  2. Na pasku Standardowa wybierz pozycję Nowe zapytanie.

  3. 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 danych UserDB do 7 MB.

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