Udostępnij za pomocą


Wymagania dotyczące miejsca na dysku dla operacji DDL dla indeksu

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Miejsce na dysku jest ważnym zagadnieniem podczas tworzenia, ponownego kompilowania lub upuszczania indeksów. Niewystarczająca ilość miejsca na dysku może obniżyć wydajność, a nawet spowodować niepowodzenie operacji indeksu. Ten artykuł zawiera ogólne informacje, które mogą ułatwić określenie ilości miejsca na dysku wymaganego dla operacji języka definicji danych indeksu (DDL).

Operacje indeksowania, które nie wymagają dodatkowego miejsca na dysku

Następujące operacje indeksowania nie wymagają dodatkowego miejsca na dysku:

  • ALTER INDEX REORGANIZE; jednak wymagana jest przestrzeń na logi.

  • DROP INDEX gdy usuwasz indeks nieklastrowany.

  • DROP INDEX w przypadku usuwania indeksu klastrowanego w trybie offline bez określania MOVE TO klauzuli i indeksy nieklastrowane nie istnieją.

  • CREATE TABLE (PRIMARY KEY lub UNIQUE ograniczenia)

Operacje indeksowania wymagające dodatkowego miejsca na dysku

Wszystkie inne operacje DDL indeksu wymagają dodatkowego tymczasowego miejsca na dysku do użycia podczas operacji oraz stałego miejsca na dysku do przechowywania nowej struktury indeksu lub struktur.

Po utworzeniu nowej struktury indeksu miejsce na dysku dla starych (źródłowych) i nowych (docelowych) struktur jest wymagane w odpowiednich plikach i grupach plików. Stara struktura nie zostanie zwolniona z przydziału aż do momentu zatwierdzenia transakcji tworzenia indeksu.

Następujące operacje DDL indeksu tworzą nowe struktury indeksów i wymagają dodatkowego miejsca na dysku:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY lub UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY lub UNIQUE) gdy ograniczenie jest oparte na indeksie klastrowanym
  • DROP INDEX MOVE TO (Dotyczy tylko indeksów klastrowanych).

Tymczasowe miejsce na dysku na potrzeby sortowania

Oprócz miejsca na dysku wymaganego dla struktur źródłowych i docelowych wymagane jest tymczasowe miejsce na dysku do sortowania, chyba że optymalizator zapytań znajdzie plan wykonywania, który nie wymaga sortowania.

Jeśli sortowanie jest wymagane, sortowanie następuje po jednym nowym indeksie na raz. Na przykład podczas ponownego kompilowania indeksu klastrowanego i skojarzonych indeksów nieklastrowanych w ramach jednej instrukcji indeksy są sortowane po drugiej. W związku z tym dodatkowe tymczasowe miejsce na dysku wymagane do sortowania musi być tak duże, jak największy indeks operacji. Jest to prawie zawsze indeks klastrowany.

Jeśli opcja SORT_IN_TEMPDB jest ustawiona na ON, największy indeks musi mieścić się w tempdb. Mimo że ta opcja zwiększa ilość tymczasowego miejsca na dysku używanego do utworzenia indeksu, może to skrócić czas wymagany do utworzenia indeksu, gdy tempdb znajduje się na zestawie dysków innych niż baza danych użytkownika.

Jeśli SORT_IN_TEMPDB jest ustawione na OFF (domyślnie), każdy indeks, w tym indeksy partycjonowane, są sortowane w ich docelowej przestrzeni dyskowej, i tylko przestrzeń dyskowa dla nowych struktur indeksów jest wymagana.

Przykład obliczania miejsca na dysku można znaleźć w temacie Indeksowanie miejsca na dysku.

Tymczasowe miejsce na dysku dla operacji indeksowania online

Podczas wykonywania operacji indeksowania w trybie online wymagane jest dodatkowe tymczasowe miejsce na dysku.

Jeśli indeks klastrowany jest tworzony, przebudowany lub porzucony w trybie online, tworzony jest tymczasowy indeks nieklastrowany w celu mapowania starych zakładek na nowe zakładki. Jeśli opcja SORT_IN_TEMPDB jest ustawiona na ON, ten tymczasowy indeks zostanie utworzony w tempdb. Jeśli SORT_IN_TEMPDB ustawiono wartość OFF, używany jest ten sam schemat grupy plików lub partycji co indeks docelowy. Indeks tymczasowego mapowania zawiera jeden rekord dla każdego wiersza w tabeli, a jego zawartość stanowi połączenie starych i nowych kolumn zakładek, w tym unikalnych identyfikatorów i identyfikatorów rekordów. Zawiera tylko jedną kopię kolumny używanej w obu zakładkach. Aby uzyskać więcej informacji na temat operacji indeksowania online, zobacz Wykonywanie operacji indeksowania w trybie online.

Uwaga / Notatka

Nie można ustawić opcji SORT_IN_TEMPDB dla instrukcji DROP INDEX. Indeks mapowania tymczasowego jest zawsze tworzony w tej samej grupie plików lub schemacie partycji co indeks docelowy.

Operacje indeksowania online używają wersjonowania wierszy, aby odizolować operację indeksu od skutków modyfikacji wprowadzanych przez inne transakcje. Pozwala to uniknąć konieczności żądania blokad współdzielenia na wierszach, które zostały odczytane. Współbieżne operacje aktualizacji i usuwania użytkowników podczas operacji indeksowania online wymagają miejsca na rekordy wersji w programie tempdb. Aby uzyskać więcej informacji, zobacz Wykonywanie operacji indeksowania w trybie online .