Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLDatabáze SQL v Microsoft Fabric
Při každém vytvoření, novém vytvoření nebo vyřazení 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. Může být také potřeba další dočasné místo na disku pro operace řazení. Další informace najdete v tématu Požadavky na místo na disku pro operace DDL indexu.
V tomto příkladu se určují požadavky na místo na disku pro vytvoření clusterovaného indexu.
Před vytvořením clusterovaného indexu předpokládejme, že platí následující podmínky:
- Existující tabulka (halda) obsahuje 1 milion řádků. Každý řádek je dlouhý 200 bajtů.
- Neclusterovaný index A obsahuje 1 milion řádků. Každý řádek je dlouhý 50 bajtů.
- Neclusterovaný index B obsahuje 1 milion řádků. Každý řádek je dlouhý 80 bajtů.
- Možnost vytvoření paměti indexu je nastavená na 2 MB.
- Hodnota 80 výplňového faktoru se používá pro všechny existující a nové indexy. To znamená, že stránky jsou plné 80 procent.
Poznámka
V důsledku vytvoření clusterovaného indexu je nutné znovu vytvořit dva neclusterované indexy, aby se indikátor řádku nahradil novým clusterovaným klíčem indexu.
Výpočty místa na disku pro operaci offline indexu
V následujících krocích se vypočítává dočasné místo na disku, které se má použít během operace indexu, i trvalé místo na disku k uložení nových indexů. Zobrazené výpočty jsou přibližné; výsledky jsou zaokrouhleny nahoru a zvažují pouze velikost úrovně listu indexu. Tilda (~) slouží k označení přibližných výpočtů.
Určete velikost zdrojových struktur.
- Halda: 1 milión * 200 bajtů ~ 200 MB
- Neclusterovaný index A: 1 milion * 50 bajtů / 80% ~ 63 MB
- Neclusterovaný index B: 1 milion * 80 bajtů / 80% ~ 100 MB
Celková velikost existujících struktur: 363 MB
Určete velikost struktur cílového indexu. Předpokládejme, že nový clusterovaný klíč je dlouhý 24 bajtů, včetně zajišťovače jedinečnosti. Indikátor řádku (8 bajtů dlouhý) v obou neclusterovaných indexech bude nahrazen tímto clusterovaným klíčem.
Clusterovaný index: 1 milion × 200 bajtů / 80% ~ 250 MB
Neclusterovaný index A: 1 milion * (50 - 8 + 24) bajtů / 80% ~ 83 MB
Neclusterovaný index B: 1 milion * (80 - 8 + 24) bajtů / 80% ~ 120 MB
Celková velikost nových struktur: 453 MB
Celkové místo na disku potřebné k podpoře zdrojové i cílové struktury během operace indexu je 816 MB (363 + 453). Prostor, který je aktuálně přidělen zdrojovým strukturám, bude uvolněn po potvrzení indexové operace.
Určete další dočasné místo na disku pro řazení.
Požadavky na místo se zobrazují pro řazení
tempdb(s nastavenýmSORT_IN_TEMPDBnaON) a řazení v cílovém umístění (s nastavenýmSORT_IN_TEMPDBnaOFF).Pokud
SORT_IN_TEMPDBje nastavená hodnotaON,tempdbmusí mít dostatek místa na disku pro uložení největšího indexu (1 milion × 200 bajtů ~ 200 MB). Fill factor se v operaci řazení nezohledňuje.Další místo na disku (v
tempdbumístění) rovnající se indexu vytvoří hodnotu paměti = 2 MB.Celková velikost dočasného místa na disku s
SORT_IN_TEMPDBnastaveným na ~ON202 MB.Pokud
SORT_IN_TEMPDBje nastavená hodnotaOFF(výchozí), použije se k řazení 250 MB místa na disku, které se už považuje za nový index v kroku 2.Požadováno je další místo na disku (v cílovém umístění) rovnající se hodnotě paměti pro vytvoření indexu, což je 2 MB.
Celková velikost dočasného místa na disku s nastavenou
SORT_IN_TEMPDBnaOFF= 2 MB.
K vytvoření clusterovaných a neclusterovaných indexů by bylo potřeba použít tempdbcelkem 1018 MB (816 + 202). I když použití tempdb zvyšuje množství dočasného místa na disku použitém k vytvoření indexu, může zkrátit dobu potřebnou k vytvoření indexu v tempdb případě, že je na jiné sadě disků než uživatelská databáze. Další informace o použití tempdb naleznete v tématu Možnost SORT_IN_TEMPDB pro indexy.
Bez použití tempdbby bylo potřeba k vytvoření clusterovaných a neclusterovaných indexů celkem 818 MB (816 + 2).
Výpočty místa na disku pro online clusterovanou operaci indexu
Při vytváření, odstraňování nebo opětovném sestavení clusterovaného indexu online se k sestavení a údržbě dočasného indexu mapování vyžaduje další místo na disku. Tento 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.
Pokud chcete vypočítat místo na disku potřebné pro operaci online clusterovaného indexu, postupujte podle kroků zobrazených pro operaci offline indexu a přidejte tyto výsledky do výsledků následujícího kroku.
Určete prostor dočasného indexu mapování.
V tomto příkladu je stará záložka ID řádku (RID) haldy (8 bajtů) a nová záložka je clusteringový klíč (24 bajtů včetně uniqueifier). Mezi starými a novými záložkami se nepřekrývají žádné překrývající se sloupce.
Dočasná velikost indexu mapování = 1 milion * (8 bajtů + 24 bajtů) / 80% ~ 40 MB.
Toto místo na disku musí být přidáno k požadovanému místu na disku v cílovém umístění, pokud je nastaveno
SORT_IN_TEMPDBnaOFFhodnotu, nebo natempdb, pokud jeSORT_IN_TEMPDBnastaveno naONhodnotu.
Další informace o dočasném indexu mapování najdete v tématu Požadavky na místo na disku pro operace DDL indexu.
Souhrn místa na disku
Následující tabulka shrnuje výsledky výpočtů místa na disku.
| Operace indexu | Požadavky na místo na disku pro umístění následujících struktur |
|---|---|
Operace offline indexu s využitím SORT_IN_TEMPDB = ON |
Celkový prostor během operace: 1 018 MB - Existující tabulka a indexy: 363 MB 1 - tempdb: 202 MB 1- Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Operace offline indexu s využitím SORT_IN_TEMPDB = OFF |
Celkový prostor během operace: 816 MB - Existující tabulka a indexy: 363 MB 1 - Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Operace online indexu s využitím SORT_IN_TEMPDB = ON |
Celkový prostor během operace: 1 058 MB - Existující tabulka a indexy: 363 MB 1 - tempdb (zahrnuje index mapování): 242 MB*- Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Operace online indexu s využitím SORT_IN_TEMPDB = OFF |
Celkový prostor během operace: 856 MB - Existující tabulka a indexy: 363 MB 1 - Dočasný index mapování: 40 MB 1 - Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
1 Toto místo je uvolněno po potvrzení operace indexu.
Tento příklad nebere v tempdb úvahu žádné další dočasné místo na disku vyžadované pro záznamy verzí vytvořené souběžnými operacemi aktualizace uživatele a odstranění.