Maybaygiare.org

Blog Network

SQL Server Index Fragmentace Přehled

Podle: Brady Upton | Aktualizováno: 2016-06-22 | Komentáře (5) | Související: Více > Fragmentace a Index Údržba

všichni Jsme slyšeli o databáze/index fragmentace (a pokud nemáte, continuereading), ale co je to? Je to problém? Jak zjistím, zda je umístěn v mé databázi?Jak to opravím? Tyto otázky by mohly být samy o sobě tipem, ale pokusím se vám dát představu o každém z těchto tipů.

Řešení

Aniž by jít do detailů, SQL Server ukládá data na 8KB stránky. Když jsme vložit data do tabulky, SQL Server přidělí jednu stránku obchodu, který dataunless data vložena je více než 8KB, ve které by zahrnovat více stránek.Každá stránka je přiřazena k jedné tabulce. Pokud vytvoříme 10 tabulek, budeme mít 10 různých stránek.

při vkládání dat do tabulky se data nejprve dostanou do souboru protokolu transakcí. Transakci log soubor je sekvenční záznam smyslu, jak si vložit, aktualizovat a odstranit recordsthe log bude zaznamenávat tyto transakce od začátku až do konce. Datový soubor na druhé straně nenísequential. Soubor protokolu bude flush data do datového souboru, vytváření stránek, celoplošný místo.

Nyní, když máme představu o tom, jak jsou data uložena, co to má společnéfragmentace?

existují dva typy fragmentace: vnitřní fragmentace a vnější fragmentace.

vnitřní fragmentace SQL Serveru

vnitřní fragmentace SQL Serveru je způsobena stránkami, které mají příliš mnoho volného místa.Pojďme předstírat, že na počátku v den, máme stůl s 40 stránek, které are100% plné, ale na konci dne, máme tabulku s 50 stránek, které jsou only80% plné, protože z různých odstranit a vložit prohlášení po celý den.To způsobuje problém, protože nyní, když potřebujeme číst z této tabulky, musíme toscan 50 stránky místo 40, což by mělo mít za následek snížení výkonu.Podívejme se na rychlý a špinavý příklad.

řekněme, že mám následující tabulka s Primární Klíč a index bez clusterů na FirstNameand Příjmení:

dbo.Osoba tabulka s Primární Klíč a index bez clusterů FirstName a LastName

budu mluvit o způsoby, jak analyzovat fragmentace později v tomto tipu, ale pro tak teď můžete klikněte pravým tlačítkem myši na indexu, klepněte na příkaz Vlastnosti a Fragmentace vidět fragmentationand stránce plnosti. Jedná se o zcela nový index, takže je na fragmentaci 0%.

SQL Server Index Vlastnosti a Fragmentace, Než Vloží

Pojďme VLOŽIT 1000 řádků do této tabulky:

INSERT INTO Person VALUES('Brady', 'Upton', '123 Main Street', 'TN', 55555)GO 1000 

Nyní, pojďme zkontrolovat náš index znovu:

SQL Server Index Vlastnosti a Fragmentace Poté Vloží

můžete vidět náš index se stává 75% roztříštěné a průměrná procent fullpages (strana plnosti) se zvyšuje na 80%. Tato tabulka je stále tak malý, že 75% fragmentationwould pravděpodobně nezpůsobí žádné problémy s výkonem, ale jako tabulka se zvyšuje v sizeand stránka se počítá zvýšení může výkon snížit. Z výše uvedeného můžete také vidět, že tato tabulka přešla z 0 stran na 4.

externí fragmentace SQL Serveru

externí fragmentace je způsobena stránkami, které jsou mimo provoz. Podívejme se na začátek dne, kdy máme dokonale uspořádaný stůl. Během dne vydáváme stovky aktualizačních příkazů, které možná zanechávají prázdné místo na jedné stránce a snaží se zapadnout do jiných stránek. To znamená, že naše úložiště musí přeskočit, aby získalo potřebná data místo čtení jedním směrem.

analýza fragmentace serveru SQL

takže je fragmentace problém? Věřím, že je. Pokud můžete uložit celou databázi do paměti nebo pokud vaše databaseis číst pouze pak bych se o to starat, ale většina z nás nemají ten luxus.Pracoval jsem na tisících serverů a analýza úrovní fragmentace je jednou z prvních věcí, na které se dívám. Ve skutečnosti, jen tím, že opravuje fragmentaci, viděl jsem až do200% zlepšení výkonu dotazu.

Když už mluvíme o analýze úrovní fragmentace, možná vás zajímá, jak to můžeme udělat. No, existuje několik způsobů …

DBCC SHOWCONTIG-tato funkce je stará a bude odstraněna v budoucích verzích SQL Serveru, ale pokud stále používáte SQL Server 2000 nebo nižší, pomůže to. Místo toho, abych o tom psal, upozorním tě sem, nebo se můžeš podívat na tip Chada Boyda. Oba jsou dobré zdroje.

DBCC SHOWCONTIG příkaz a výstup

sys.dm_db_index_physical_stats – Zavedené v SQL Server 2005, tento dynamický managementview (DMV) vrátí velikost a roztříštěnost informací pro data a indexy z uvedené tabulky nebo zobrazení.

SELECT OBJECT_NAME(ips.OBJECT_ID) ,i.NAME ,ips.index_id ,index_type_desc ,avg_fragmentation_in_percent ,avg_page_space_used_in_percent ,page_countFROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ipsINNER JOIN sys.indexes i ON (ips.object_id = i.object_id) AND (ips.index_id = i.index_id)ORDER BY avg_fragmentation_in_percent DESC 

Dotazování sys.dm_db_index_physical_stats pro Průměr Roztříštěnost

Toto je pravděpodobně nejpoužívanější metodou analýzy fragmentace. Z výše uvedeného obrázku můžete vidět, že mám index s názvem ix_rpcust_1 v tabulce theRPCust, která je fragmentována 98.83%. Můžete vidět více informací o tomto DMVherefrom Arshad Ali.

software třetích stran-software třetích stran pomůže identifikovat fragmentacetakže nemusíte. Greg Robidoux nabízí dobrý tip na správce SQL Defrag Idery.

Oprava fragmentace serveru SQL

Nyní, když jsme našli fragmentaci v databázi, jak ji opravíme? Stejně jako analýzy indexů existuje více způsobů.

SQL server maintenance plans-plány údržby jsou dodávány s SQLServer a jsou pěkné pro některé úkoly. Údržba indexu podle mého názoru není jedním z nichje. Do plánu maintenanceplan můžete přidat úlohu rebuild index nebo reorganizovat úlohu indexu, ale problém je v tom, že na plán nemůžete použít žádnou logiku. Bez logiky plán obnoví / reorganizuje každý index. Některé indexy nemusí být roztříštěné, takže není třeba je přestavovat. Některé indexy mohou mít minimální fragmentacetakže by byly v pořádku s reorganizací. V plánu údržby se to nedá specifikovat. InSQL Server 2016 existují nové možnosti pro správu fragmentace.

Custom Script-vlastní skripty jsou pravděpodobně způsob, jak jít, protože youcan použít logiku pro kontrolu fragmentace indexu a pak se rozhodnout, zda přeskočit index, reorganizovat nebo znovu vytvořit. Používám jejich scénáře a dělají přesně to, co od nich potřebuji. Mssqltips.com má také theseresources – SQL Server fragmentace a Index údržby tipy.

software třetích stran-software třetích stran pomůže defragmentovat indexytak nemusíte.

Další Kroky,
  • Tento tip vám dává představu o některé z komponent zapojených v indexfragmentation. MSSQLTips.com nabízí komplexnější tipy zaměřené na každéhoz předmětů, které jsem zde zmínil.
  • ujistěte se, že zkontrolovat outChad Boyd SQL Server Fragmentace tutorial, který nabízí skvělé nových četné témata týkající roztříštěnost

Naposledy Aktualizováno: 2016-06-22

get scripts

next tip button

About the author
MSSQLTips author Brady UptonBrady Upton is a Database Administrator and SharePoint superstar in Nashville, TN.
View all my tips
Related Resources

  • More SQL Server DBA Tips…

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.