Sdílet prostřednictvím


Požadavky na místo na disku pro operace DDL indexu

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLDatabáze SQL v Microsoft Fabric

Při vytváření, opětovném sestavení nebo vyřazení indexů je důležité zvážit místo na disku. Nedostatečné místo na disku může snížit výkon nebo dokonce způsobit selhání operace indexu. Tento článek obsahuje obecné informace, které vám pomůžou určit velikost místa na disku vyžadované pro operace jazyka DDL (Index Data Definition Language).

Operace indexu, které nevyžadují žádné další místo na disku

Následující operace indexu nevyžadují žádné další místo na disku:

  • ALTER INDEX REORGANIZE; je však potřeba místo na logy.

  • DROP INDEX když odstraňujete neklastrovaný index.

  • DROP INDEX když přenášíte clusterovaný index offline bez zadání příkazu MOVE TO a neexistují neclusterované indexy.

  • CREATE TABLE (PRIMARY KEY nebo UNIQUE omezení)

Operace indexu, které vyžadují další místo na disku

Všechny ostatní operace DDL indexu vyžadují další dočasné místo na disku, které se použije během operace, a trvalé místo na disku pro uložení nové struktury nebo struktur indexu.

Při vytvoření nové struktury indexu se ve vhodných souborech a skupinách souborů vyžaduje místo na disku pro staré (zdrojové) i nové (cílové) struktury. Stará struktura není uvolněna, dokud není dokončena transakce pro vytvoření indexu.

Následující operace DDL indexu vytvářejí nové struktury indexu a vyžadují další místo na disku:

  • CREATE INDEX
  • CREATE INDEX WITH DROP_EXISTING
  • ALTER INDEX REBUILD
  • ALTER TABLE ADD CONSTRAINT (PRIMARY KEY nebo UNIQUE)
  • ALTER TABLE DROP CONSTRAINT (PRIMARY KEY nebo UNIQUE) v případech, kdy je omezení založeno na clusterovém indexu
  • DROP INDEX MOVE TO (Platí jenom pro clusterované indexy.)

Dočasné místo na disku pro řazení

Kromě místa na disku vyžadovaného pro zdrojové a cílové struktury se k řazení vyžaduje dočasné místo na disku, pokud optimalizátor dotazů nenajde plán provádění, který nevyžaduje řazení.

Pokud je řazení povinné, probíhá řazení po jednom novém indexu. Například při opětovném sestavení clusterovaného indexu a přidružených neclusterovaných indexů v rámci jednoho příkazu se indexy seřadí jeden za druhým. Proto další dočasné místo na disku, které je nutné pro řazení, musí být tak velké jako největší index v operaci. To je téměř vždy clusterovaný index.

Pokud je možnost nastavena SORT_IN_TEMPDB na ON, největší index se musí vejít do tempdb. I když tato možnost zvyšuje množství dočasného místa na disku, které se používá k vytvoření indexu, může zkrátit dobu potřebnou k vytvoření indexu, pokud tempdb je na sadě disků, které se liší od uživatelské databáze.

Pokud SORT_IN_TEMPDB je každý index nastavený na OFF (výchozí) včetně dělených indexů, je seřazený do cílového místa na disku a vyžaduje se pouze místo na disku pro nové struktury indexu.

Příklad výpočtu místa na disku najdete v příkladu místa na disku indexu.

Dočasné místo na disku pro operace online indexu

Při online provádění operací indexu je vyžadováno další dočasné místo na disku.

Pokud se clusterovaný index vytvoří, znovu sestaví nebo přeřadí do online režimu, vytvoří se dočasný neclusterovaný index pro mapování starých záložek na nové záložky. Pokud je možnost SORT_IN_TEMPDB nastavena na ON, tento dočasný index se vytvoří v tempdb. Pokud SORT_IN_TEMPDB je nastavená hodnota OFF, použije se stejné schéma skupiny souborů nebo oddílu jako cílový index. Dočasný index mapování obsahuje jeden záznam pro každý řádek v tabulce a jeho obsah je sjednocení starých a nových sloupců záložek, včetně jedinečných identifikátorů a identifikátorů záznamů a zahrnutí pouze jedné kopie libovolného sloupce použitého v obou záložkách. Další informace o online indexovacích operacích naleznete v tématu Provádění operací indexu online.

Poznámka:

Možnost SORT_IN_TEMPDB nelze nastavit pro DROP INDEX příkazy. Dočasný index mapování se vždy vytvoří ve stejné skupině souborů nebo schématu oddílů jako cílový index.

Online indexové operace používají správu verzí řádků k izolaci operace indexu od účinků úprav provedených jinými transakcemi. Tím se zabrání nutnosti požadovat sdílené zámky na řádcích, které byly přečteny. Souběžné operace aktualizace a odstranění uživatelů během online indexových operací vyžadují místo pro záznamy verzí v tempdb. Další informace naleznete v tématu Provádění operací indexu online .