Sdílet prostřednictvím


Příklad indexu místa na disku

platí pro:SQL ServerAzure SQL Databaseazure 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ů.

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

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

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

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

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

požadavky na místo na disku pro operace indexování DDL

místo na disku transakčního protokolu pro operace indexu