Översikt över indexfragmentering
Vad är indexfragmentering och varför jag bör fokusera på det: Fragmentering uppstår när den logiska ordningen i indexet (baserat på nyckelvärdet i indexet) inte stämmer överens med den fysiska ordningen på indexsidorna i indexsidorna på indexet på de sidor som indexet innehåller. När en insättnings-, uppdaterings- eller borttagningsoperation utförs på den underliggande datan modifierar databasmotorn automatiskt indexet. Till exempel kan tillägg av rader i en tabell leda till delade rader för att lagra befintliga sidor i indexet och ge plats åt att infoga nya nycklar. Med tiden kan dessa ändringar göra att information i indexet sprids i databasen (som innehåller fragment). Fragmentering uppstår när den logiska ordningen (baserat på nyckelvärde) i sidorna som indexet innehåller inte stämmer överens med den fysiska ordningen i datafilen. Ett stort antal fragmenterade index kan sakta ner frågeprestandan eftersom ytterligare I/O krävs för att hitta den data som indexet pekar på. Mer I/O kan göra att applikationen blir långsam att svara, särskilt när skanningsoperationer är inblandade.
Kontrollera för fragmentering av databasindex
Befallning:
Det finns två sätt att defragmentera: omorganisera och återskapa index, att bygga om index innebär att ta bort gamla index och bygga om nya index i en transaktion, vilket återtar hårddiskutrymmet från det ursprungliga indexet och tilldelar nytt lagringsutrymme för att skapa en indexstruktur. Omorganisering av index avser att inte allokera nytt lagringsutrymme, omorganisera bladnoderna i indexstrukturen baserat på det ursprungliga utrymmet, så att den logiska ordningen och den fysiska ordningen på datasidorna är konsekventa, och frigöra överskottsutrymmet i indexet.
Använd funktionen sys.dm_db_index_physical_stats för att upptäcka graden av fragmentering, fält avg_fragmentation_in_percent procentandelen logiska fragment som returneras, generellt rekommenderar Microsoft en tröskel på 30 %:
avg_fragmentation_in_percent >5 % och <=30 %: ALTER INDEX OMORGANISERAS; avg_fragmentation_in_percent >30%: ALTER INDEX REBUILD;
avg_fragmentation_in_percent: Indexfragmenteringsprocent, om fragmenteringen är mindre än 10%~20%, är fragmentering sannolikt inte ett problem,Om indexfragmenteringen är 20 % ~40 %, kan fragmentering bli ett problem, men indexupplösning kan elimineras genom indexreorganisation, och storskalig fragmentering (när fragmenteringen är större än 40%) kan kräva indexrekonstruktion.
Sök fragmenteringsinformationen för alla index i en given tabell
Tabellomindexering
Bygg om indexet för alla tabeller i hela databasen
Resurser:Inloggningen med hyperlänken är synlig.
|