mercredi 27 mai 2009

Défragmentation des tables

L'article "Understanding SQL Server's DBCC SHOWCONTIG" est très intéressant pour comprendre la fragmentation des tables.

DBCC ShowContig
L'instruction DBCC ShowContig( ObjectID ) permet d'obtenir des informations sur la fragmentation.
L'article décrit correctement comment interpréter ces valeurs.

DBCC DBReindex
Permet de faire un "defrag" de la table tel que le ferait un logiciel de défragmentation du disque dur.
Attention à l'espace disque!
Un index defrag nécessite énormement de place dans le data file.
A titre d'exemple, j'ai vu mon primary data file glonfler de 4Go à 23 Go lorsque j'ai defragmenté ma table d'audit de 11 Go)

DBCC DBREindex( 'tablename' )

Script utile
Le script suivant permet de générer un script analysant les 10 plus grosses tables de la DB.
SELECT TOP 10
'DBCC SHOWCONTIG(' + CAST(id AS NVARCHAR(20)) + ')'
+ CHAR(10) +
'PRINT '' ''' + CHAR(10)
FROM
sysindexes
WHERE
indid = 1 or
indid = 0
ORDER BY rows DESC 

Aucun commentaire: