it-swarm-eu.dev

Proč potřebujeme znovu vytvořit a reorganizovat indexy na serveru SQL

Po prohledání internetu jsem nenašel důvod

  1. Proč potřebujeme znovu sestavit a reorganizovat indexy na serveru SQL?

  2. co se stane interně, když znovu budujeme a reorganizujeme?

Článek na site říká:

Index by měl být znovu vytvořen, když je fragmentace indexu velká než 40%. Index by měl být reorganizován, pokud je fragmentace indexu mezi 10% a 40%. Proces vytváření indexů využívá více CPU a blokuje prostředky databáze. Verze vývoje serveru SQL a verze Enterprise má možnost ONLINE, kterou lze zapnout při opětovném sestavení indexu. ONLINE volba bude mít index k dispozici během přestavby.

Tomu jsem nerozuměl, i když to říká, že WHEN, abych to udělal, ale rád bych věděl WHY musíme znovu vytvořit a reorganizovat indexy?

28
Mourya

Při provádění aktualizací a mazání příloh budou vaše indexy fragmentovány interně i externě.

Interní fragmentace znamená, že na indexových stránkách máte vysoké procento volného místa, což znamená, že SQL Server musí při skenování indexu číst více stránek.

Externí fragmentace je, když stránky indexu již nejsou v pořádku, takže SQL Server musí udělat více práce, zejména v termínech IO), aby se index mohl přečíst.

Pokud budou vaše indexy příliš roztříštěné, vaše dotazy budou v nejlepším případě méně efektivní, ale v nejhorším případě SQL Server prostě přestane používat všechny indexy, což znamená, že prakticky všechny dotazy by musely provést skenování tabulky nebo skenování seskupeného indexu. To hodně zraní váš výkon!

Při reorganizaci indexu pak SQL Server použije existující indexové stránky a pouze zamíchá data kolem těchto věků. To zmírní vnitřní fragmentaci a může také odstranit malé množství externí fragmentace. Je to operace s nižší hmotností než přestavba a je vždy online.

Při opětovném sestavení indexu SQL Server ve skutečnosti převede data indexu a použije novou sadu stránek indexu. To zjevně zmírní interní i externí fragmentaci, ale je to operace s vyšší hmotností a ve výchozím nastavení způsobí, že se index přepne do režimu offline, i když může být proveden jako online operace, v závislosti na verzi a nastavení serveru SQL.

Neočekávejte však, že po přestavbě bude 0 fragmentace. Pokud nepoužijete tip dotazů MAXDOP, SQL Server paralelizuje operaci opětovného sestavení a čím více zapojených procesorů, tím větší bude fragmentace, protože každý procesor nebo jádro znovu sestaví svou sekci nebo fragment indexu samostatně, bez ohledu na navzájem. Jedná se o kompromis mezi nejlepšími úrovněmi fragmentace a časem potřebným k opětovnému vytvoření indexu. Pro fragmentaci téměř 0 použijte MAXDOP 1 a výsledky seřaďte v TempDB.

29
Pete Carter

Za účelem odstranění fragmentace, která způsobuje problémy, jako je pomalost na úrovni databáze/dlouhé dotazy atd.

Chcete-li získat podrobné informace o fragmentaci a o tom, jak přestavět a reorganizovat indexy (nebo reorganizovat indexové stránky), postupujte podle tohoto odkazu: https://www.idera.com/productssolutions/sqlserver/sqldefragmanager/what-is-fragmentation