Oversikt over indeksfragmentering
Hva er indeksfragmentering og hvorfor jeg bør fokusere på det: Fragmentering oppstår når den logiske rekkefølgen i indeksen (basert på nøkkelverdien i indeksen) ikke samsvarer med den fysiske rekkefølgen på indekssidene i indekssidene i indeksen på sidene som indeksen inneholder. Hver gang en innsettings-, oppdaterings- eller slettingsoperasjon utføres på de underliggende dataene, endrer databasemotoren automatisk indeksen. For eksempel kan det å legge til rader i en tabell føre til delte rader for å lagre eksisterende sider i indeksen for å gjøre plass til å sette inn nye nøkler. Over tid kan disse endringene føre til at informasjon i indeksen blir spredt i databasen (som inneholder fragmenter). Fragmentering oppstår når den logiske rekkefølgen (basert på nøkkelverdi) i sidene som indeksen inneholder ikke stemmer overens med den fysiske rekkefølgen i datafilen. Et stort antall fragmenterte indekser kan redusere spørringsytelsen fordi ytterligere I/O kreves for å finne dataene indeksen peker på. Mer I/O kan gjøre applikasjonen treg til å svare, spesielt når det er skanneoperasjoner involvert.
Sjekk for fragmentering av databaseindekser
Kommando:
Det finnes to måter å defragmentere på: reorganisere og gjenskape indekser; å bygge opp indekser refererer til å slette gamle indekser og bygge nye indekser på nytt i en transaksjon, som gjenerobrer harddiskplassen fra den opprinnelige indeksen og tildeler ny lagringsplass for å lage en indeksstruktur. Reorganisering av indekser refererer til å ikke allokere ny lagringsplass, reorganisere bladnodene i indeksstrukturen basert på det opprinnelige rommet, slik at den logiske og fysiske rekkefølgen på datasidene er konsistente, og frigjøre overflødig plass i indeksen.
Bruk funksjonen sys.dm_db_index_physical_stats for å oppdage graden av fragmentering, felt avg_fragmentation_in_percent prosentandelen logiske fragmenter som returneres, generelt anbefaler Microsoft en terskel på 30 %:
avg_fragmentation_in_percent >5 % og <=30 %: ALTER INDEX REORGANISERER; avg_fragmentation_in_percent >30 %: ALTER INDEX REBUILD;
avg_fragmentation_in_percent: Indeksfragmenteringsprosent, hvis fragmenteringen er mindre enn 10 %~20 %, er fragmentering sannsynligvis ikke et problem,Hvis indeksfragmenteringen er på 20 %~40 %, kan fragmentering bli et problem, men indeksoppløsning kan elimineres ved indeksreorganisering, og storskala fragmentering (når fragmentering er større enn 40 %) kan kreve indeksrekonstruksjon.
Søk i fragmenteringsinformasjonen for alle indekser i en gitt tabell
Tabellindeksering
Bygg opp indeksen til alle tabeller i hele databasen på nytt
Ressurser:Innloggingen med hyperkoblingen er synlig.
|