Frammentazione degli indici
Per la maintenance di un database un aspetto importante da analizzare e gestire è la frammentazione degli indici (clustered e non).
Monitorare il grado di deframmentazione e decidere se deframmentarli o meno non sempre è semplice e soprattutto spesso non viene minimamente considerato.
Un aiuto parziale, se lavoriamo su SQL Server 2005, ci viene da uno splendido script pubblicato su SQL Server Magazine. Si tratta di una stored procedure che permette di visualizzare lo stato di frammentazione degli indici per una specifica tabella o per tutto il database e nel caso si preoccupa anche di deframmentare il tutto seguendo questo criterio:
- rebuild per gli indici con frammentazione superiore al 30%;
- reorganize per quelli con frammentazione tra 5% e 29%;
- ignora quelli con frammentazione inferiore al 5%.
Perchè dico aiuto parziale? Perchè non è sempre scontato che la deframmentazione di un indice porti i benefici che ci attendiamo e che sia un’operazione che fatta di frequente ci porti ai risultati attesi. Ogni database fa caso a parte e dovrebbe essere analizzato attentamente per scegliere la strategia migliore di intervento. Per dirla in altra parole: questo script è comodo ma schedularlo ogni notte non è una strategia di maintenance.
Per l’articolo completo a cui faccio riferimento: Queries Dragging? Try Defragging
Una cosa da evidenziare sulla Stored Procedure: fa dei lock su tabelle, quindi non è il caso di lanciarla nell’ora di punta dell’utilizzo del db
sql, sql server, sql server 2005, defrag, index, maintenance, performance










