Sdílet prostřednictvím


Odhad velikosti haldy

Platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)SQL databáze v Microsoft Fabric

Pomocí následujících kroků můžete odhadnout množství místa potřebného k ukládání dat do haldy:

  1. Zadejte počet řádků, které budou v tabulce přítomné:

    • Num_Rows = počet řádků v tabulce
  2. Zadejte počet sloupců s pevnou délkou a proměnlivou délkou a vypočítejte prostor potřebný pro jejich úložiště:

    Vypočítá mezeru, kterou každá z těchto skupin sloupců zabírá v řádku dat. Velikost sloupce závisí na datovém typu a specifikaci délky.

    • Num_Cols = celkový počet sloupců (pevná délka a proměnná délka)
    • Fixed_Data_Size = celková velikost bajtů všech sloupců s pevnou délkou
    • Num_Variable_Cols = počet sloupců s proměnnou délkou
    • Max_Var_Size = maximální celková velikost bajtu všech sloupců s proměnlivou délkou
  3. Část řádku, která se označuje jako rastrový obrázek s hodnotou null, je vyhrazena ke správě hodnoty null sloupce. Vypočítat jeho velikost:

    • Null_Bitmap = 2 + ((Num_Cols + 7) / 8)

    Měla by se použít pouze celočíselná část tohoto výrazu. Zahoďte zbývající část.

  4. Výpočet velikosti dat s proměnnou délkou:

    Pokud jsou v tabulce sloupce s proměnlivou délkou, určete, kolik místa se používá k ukládání sloupců v řádku:

    • Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size

    Bajty přidané do Max_Var_Size slouží ke sledování jednotlivých sloupců s proměnlivou délkou. Tento vzorec předpokládá, že všechny sloupce s proměnlivou délkou jsou plné 100 procent. Pokud předpokládáte, že se použije menší procento prostoru úložiště sloupce s proměnlivou délkou, můžete upravit hodnotu Max_Var_Size podle tohoto procenta, aby bylo možné získat přesnější odhad celkové velikosti tabulky.

    Note

    Můžete kombinovat varchar, nvarchar, varbinárnínebo sql_variant sloupce, které způsobují, že celková definovaná šířka tabulky přesahuje 8 060 bajtů. Délka každého z těchto sloupců musí stále spadat do limitu 8 000 bajtů pro sloupec varchar, nvarchar, varbinary nebo sql_variant . Jejich kombinované šířky ale můžou překročit limit 8 060 bajtů v tabulce.

    Pokud neexistují žádné sloupce s proměnnou délkou, nastavte Variable_Data_Size na 0.

  5. Vypočítejte celkovou velikost řádku:

    • = Row_Size + Fixed_Data_Size + Variable_Data_SizeNull_Bitmap + 4

    Hodnota 4 ve vzorci představuje překrytí záhlaví datového řádku.

  6. Výpočet počtu řádků na stránku (8 096 volných bajtů na stránku):

    • řádky_na_stránku = 8096 / (velikost_řádku + 2)

    Vzhledem k tomu, že řádky nepřesahují stránky, měl by se počet řádků na stránku zaokrouhlit dolů na nejbližší celý řádek. Hodnota 2 ve vzorci je pro položku řádku v poli slotu stránky.

  7. Výpočet počtu stránek potřebných k uložení všech řádků:

    • Počet_stran = Počet_řádků / Řádky_na_stránku

    Odhadovaný počet stránek by se měl zaokrouhlit nahoru na nejbližší celou stránku.

  8. Vypočítejte množství místa potřebného k uložení dat v haldě (celkem 8 192 bajtů na stránku):

    Velikost haldy (bajty) = 8192 x Num_Pages

Tento výpočet nebere v úvahu následující podmínky:

  • Dělení: Prostorová režie způsobená dělením je minimální, ale složitá k vypočítání. Není důležité zahrnout.

  • Stránky přidělení: Ke sledování stránek přidělených paměťové haldě se používá alespoň jedna stránka IAM, ale režijní náklady na prostor jsou minimální a neexistuje algoritmus k deterministickému výpočtu přesně toho, kolik stránek IAM se použije.

  • Hodnoty velkého objektu (LOB): Algoritmus, který přesně určuje, kolik místa se použije k uložení datových typů LOB varchar(max), varbinary(max), nvarchar(max), text, ntextxml a hodnoty obrázků je složité. Stačí jenom přidat průměrnou velikost očekávaných hodnot LOB a přidat ji do celkové velikosti haldy.

  • Komprese: Velikost komprimované haldy nelze předem vypočítat.

  • Řídké sloupce: Informace o požadavcích na prostor řídkých sloupců najdete v tématu Použití řídkých sloupců.