Oversigt over indeksfragmentering
Hvad er indeksfragmentering, og hvorfor jeg bør fokusere på det: Fragmentering opstår, når den logiske rækkefølge i indekset (baseret på nøgleværdien i indekset) ikke matcher den fysiske rækkefølge på indekssiderne i indekssiderne i indekset på de sider, som indekset indeholder. Når der udføres en indsættelse, opdatering eller sletning på de underliggende data, ændrer databasemotoren automatisk indekset. For eksempel kan tilføjelse af rækker til en tabel forårsage split-rækker, der gemmer eksisterende sider i indekset for at gøre plads til indsættelse af nye nøgler. Over tid kan disse ændringer få information i indekset spredt i databasen (som indeholder fragmenter). Fragmentering opstår, når den logiske rækkefølge (baseret på nøgleværdi) i de sider, som indekset indeholder, ikke stemmer overens med den fysiske rækkefølge i datafilen. Et stort antal fragmenterede indekser kan sænke forespørgselsydelsen, fordi yderligere I/O er nødvendig for at finde de data, indekset peger på. Mere I/O kan gøre applikationen langsom til at reagere, især når der er scanningsoperationer involveret.
Tjek for fragmentering af databaseindeks
Kommando:
Der er to måder at defragmentere på: reorganiser og genskab indekser; genopbygning af indekser refererer til at slette gamle indekser og genopbygge nye indekser i en transaktion, hvilket genvinder harddiskpladsen fra det oprindelige indeks og tildeler ny lagringsplads til at skabe en indeksstruktur. Reorganisering af indekser refererer til ikke at allokere ny lagerplads, omorganisere bladnoderne i indeksstrukturen på baggrund af det oprindelige rum, så den logiske og fysiske rækkefølge af datasiderne er konsistente, og frigøre overskydende plads i indekset.
Brug funktionen sys.dm_db_index_physical_stats til at opdage graden af fragmentering, felt avg_fragmentation_in_percent procentdelen af de logiske fragmenter, der returneres, generelt anbefaler Microsoft en tærskel på 30%:
avg_fragmentation_in_percent >5% og <=30%: ALTER INDEX REORGANISERER; avg_fragmentation_in_percent >30%: ALTER INDEX GENOPBYGNING;
avg_fragmentation_in_percent: Indeksfragmenteringsprocent, hvis fragmenteringen er mindre end 10%~20%, er fragmentering sandsynligvis ikke et problem,Hvis indeksfragmenteringen er på 20%~40%, kan fragmentering være et problem, men indeksopløsning kan elimineres ved indeksreorganisering, og storskala fragmentering (når fragmenteringen er større end 40%) kan kræve indeksrekonstruktion.
Forespørg fragmenteringsinformationen for alle indekser i en given tabel
Tabelindeksering
Genopbyg indekset for alle tabeller i hele databasen
Ressourcer:Hyperlink-login er synlig.
|