Příklad indexu místa na disku
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
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í potvrzena transakce vytvoření indexu. Může být také potřeba další dočasné místo na disku pro operace řazení. Další informace naleznete v tématu Požadavky na diskový prostor pro operace indexu DDL.
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 milion * 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 po dobu trvání 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í v tempdb (s SORT_IN_TEMPDB nastaveným na ZAPNUTO) a řazení v cílovém umístění (s SORT_IN_TEMPDB nastavenou na VYPNUTO).
Pokud je SORT_IN_TEMPDB nastavená na hodnotu ZAPNUTO, databáze tempdb musí mít dostatek místa na disku pro uložení největšího indexu (1 milion × 200 bajtů ~ 200 MB). Plnící faktor se v operaci řazení nebere v úvahu.
Další místo na disku (v umístění tempdb) se rovná Konfigurovat možnost konfigurace paměťového serveru hodnota = 2 MB.
Celková velikost dočasného místa na disku s SORT_IN_TEMPDB nastavenou na hodnotu ON ~ 202 MB.
Pokud je SORT_IN_TEMPDB nastavená na VYPNUTO (výchozí), použije se k řazení 250 MB místa na disku, které se už považuje za nový index v kroku 2.
Další místo na disku (v cílovém umístění) rovné hodnotě možnosti konfigurace paměti pro vytváření indexu serveru = 2 MB.
Celková velikost dočasného místa na disku s SORT_IN_TEMPDB nastavenou na VYPNUTO = 2 MB.
Při použití databáze tempdbby bylo potřeba k vytvoření clusterovaných a neclusterovaných indexů celkem 1018 MB (816 + 202). I když použití databáze 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, když databáze tempdb je na jiné sadě disků než uživatelská databáze. Informace o použití databáze tempdbnajdete v bodu možnost SORT_IN_TEMPDB pro indexy.
Bez použití databáze 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 operaci online clusterovaného 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.
Pokud je SORT_IN_TEMPDB nastavená na hodnotu VYPNUTO, musí být toto místo na disku přidáno do požadovaného místa na disku nebo databáze tempdb, pokud je SORT_IN_TEMPDB zapnuto.
Další informace o dočasném indexu mapování naleznete 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 indexu v offline režimu s nastavením SORT_IN_TEMPDB = ZAPNUTO. | Celkový prostor během operace: 1018 MB -Existující tabulka a indexy: 363 MB* - databáze tempdb: 202 MB* -Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Operace indexu v režimu offline se SORT_IN_TEMPDB = VYPNUTO | Celkový prostor během operace: 816 MB -Existující tabulka a indexy: 363 MB* -Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Operace indexování online s SORT_IN_TEMPDB = ZAPNUTO | Celkový prostor během operace: 1058 MB -Existující tabulka a indexy: 363 MB* - databáze tempdb (zahrnuje index mapování): 242 MB* -Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Online operace s indexem s SORT_IN_TEMPDB = VYPNUTO | Celkový prostor během operace: 856 MB -Existující tabulka a indexy: 363 MB* -Dočasný index mapování: 40 MB* -Nové indexy: 453 MB Celková požadovaná mezera po operaci: 453 MB |
Tento prostor je uvolněn po potvrzení indexování.
Tento příklad nebere v úvahu žádné další dočasné místo na disku vyžadované v databázi tempdb pro záznamy verzí vytvořené souběžnými operacemi aktualizace a odstranění uživatele.