sql >> Databáze >  >> RDS >> Sqlserver

Tipy pro opravu fragmentace indexu SQL Server

Fragmentace indexu SQL Server je běžným zdrojem snížení výkonu databáze. K fragmentaci dochází, když je na datové stránce mnoho prázdného místa (interní fragmentace) nebo když logické pořadí stránek v indexu neodpovídá fyzickému pořadí stránek v datovém souboru (externí fragmentace).

Problémy s výkonem související s fragmentací jsou nejčastěji pozorovány při provádění dotazů, které provádějí prohledávání indexů. Dotazy, které provádějí hledání indexu, nemusí být ovlivněny vysokou fragmentací indexu.

Porozumění typům fragmentace indexu SQL Server

Interní fragmentace indexu

K vnitřní fragmentaci dochází, když datové stránky mají příliš mnoho volného místa. Tento prostor navíc je představen několika různými způsoby:

  • SQL Server ukládá data na stránky o velikosti 8 kB. Když tedy do tabulky vložíte méně než 8 kB dat, zůstane vám na stránce prázdné místo.
  • Naopak, pokud vložíte více dat, než je na stránce místo, přebytek se odešle na jinou stránku. Je nepravděpodobné, že dodatečná data dokonale zaplní následující stránky, takže vám na stránce opět zůstane prázdné místo.
  • Prázdné místo na datové stránce se objeví také při odstranění dat z tabulky.

Vnitřní fragmentace primárně způsobuje problémy s výkonem, když SQL Server provádí skenování indexu. Výkon se zpomalí, když SQL Server musí skenovat mnoho částečně vyplněných stránek, aby našel hledaná data.

Fragmentace externího indexu

Externí fragmentace je důsledkem nefunkčnosti datových stránek. To je způsobeno vložením nebo aktualizací dat na celé listové stránky. Když jsou data přidána na celou stránku, SQL Server vytvoří rozdělení stránky, aby se do něj vešla další data, a nová stránka se oddělí od původní stránky.

Externí fragmentace způsobuje problémy s výkonem zvýšením počtu náhodných I/O. Když stránky nejsou sekvenční, SQL Server musí číst data z více míst, což je časově náročnější než čtení popořadě.

Jak se vyhnout fragmentaci indexu SQL Server

Fragmentaci indexu není možné úplně zabránit, ale existují způsoby, jak minimalizovat její výskyt a snížit vliv fragmentace na výkon databáze. Zde je několik doporučení a doporučení, jak se vyhnout fragmentaci indexu SQL Server:

PROVEĎTE: Vyberte klíče clusteru, které mají stále rostoucí nebo stále klesající hodnoty. Tím se sníží rozdělení stránek, protože když vložíte záznamy, budou umístěny na začátek nebo konec logického řetězce stránek.

NE: Vložte záznamy s náhodnými hodnotami klíče. Zvolte statické hodnoty klíčů, aby se záznam po umístění nikdy nemusel přesouvat a nevypadl z provozu.

NE: Aktualizujte záznamy, aby byly delší. Přidání záznamů do indexu během aktualizace může vyžadovat, aby SQL Server poslal některá data na novou stránku. To může mít za následek nesekvenční listové stránky a případně problémy s výkonem.

NE: Aktualizujte sloupce indexového klíče. Aktualizace klíčového sloupce vyžadují úplné odstranění řádku a následné vložení celého řádku pomocí nové hodnoty klíče. Pokud je nový řádek vložen na stránku bez dostatečného místa, získáte rozdělení stránky.

PROVEĎTE: Buďte si vědomi funkcí, které mohou způsobit rozdělení stránky. Mějte na paměti potenciální konečné výsledky úpravy jakékoli funkce, která zahrnuje indexy. Například aktualizace sloupců s proměnnou šířkou (i v neklíčových sloupcích) v seskupeném indexu může způsobit rozdělení stránek.

PROVEĎTE: Implementujte vhodné faktory plnění indexu. Analyzujte fragmentaci při výchozím nastavení faktoru plnění a upravte podle potřeby, abyste minimalizovali nadměrnou fragmentaci při normální zátěži.

Jak opravit fragmentaci indexu SQL Server

Vzhledem k tomu, že zabránit fragmentaci na 100 procent je nemožné, je důležité vědět, jak opravit fragmentaci indexu SQL Server, pokud výkon klesá.

Než se budete moci rozhodnout, jak přistupovat k problému s fragmentací indexu SQL Server, musíte nejprve určit, jak rozsáhlý problém řešíte.

Nejlepším místem pro začátek je použití DMF sys.dm_db_index_physical_stats k analýze úrovně fragmentace vašich indexů. Jakmile zjistíte, jak rozsáhlá je fragmentace indexu, můžete svůj plán útoku nakreslit pomocí jednoho ze tří řešení:přestavět index, reorganizovat index nebo nedělat nic.

Znovu sestavit: Znovu sestavit indexy, když fragmentace dosáhne více než 30 procent.

Reorganizovat: Reorganizujte indexy s fragmentací mezi 11–30 procenty.

Ignorovat: Úrovně fragmentace 10 procent nebo méně by neměly představovat problém s výkonem, takže nemusíte nic dělat.

Fragmentaci indexu SQL Server se nelze vyhnout, ale můžete minimalizovat negativní účinky fragmentace na výkon databáze. Dodržujte několik jednoduchých doporučených postupů a udržujte si přehled o plánované údržbě, abyste zmírnili jakékoli velké problémy s výkonem související s fragmentací.


  1. Proč v klauzulích where nejsou žádné funkce v okně?

  2. 911/112:Datový model služby tísňového volání

  3. SQL se připojí

  4. Geniální nástroj pro změnu hesla SQL pro resetování hesla SQL