Le code suivant permet de connaitre l’état de fragmentation des index sur une table
SELECT
INDEX_TYPE_DESC,
AVG_FRAGMENTATION_IN_PERCENT,
FRAGMENT_COUNT,
AVG_FRAGMENT_SIZE_IN_PAGES,
PAGE_COUNT,
AVG_PAGE_SPACE_USED_IN_PERCENT
FROM
SYS.DM_DB_INDEX_PHYSICAL_STATS(DB_ID(), OBJECT_ID('NOM_TABLE'), NULL, NULL , 'DETAILED');
la fonction DB_ID ()
fait référence à la base de données active.
la colonne AVG_FRAGMENTATION_IN_PERCENT
représente la fragmentation externe et AVG_PAGE_SPACE_USED_IN_PERCENT
la fragmentation interne.
Si la fragmentation est trop importante (fragmentation externe > 10, fragmentation interne <75) , les commandes suivantes permettent :
- de supprimer et recréer les index de la table :
DBCC DBREINDEX(NOM_TABLE)
- défragmenter les index d’une table :
DBCC INDEXDEFRAG(NOM_TABLE)
- supprimer et recréer les index de toutes les tables de la base:
sp_MSForEachTable
"
DBCC DBREINDEX('?')"
Les commandes DBCC
vont disparaitre dans les prochaines versions de SQL Server.
Elles sont pour l’instant supportées dans SQL Server 2005, mais il est conseillé d’utiliser dès maintenant les commandes suivantes :
DBCC DBREINDEX ==> ALTER INDEX
avec l’option REBUILD
DBCC INDEXDEFRAG ==> ALTER INDEX
avec l’option REORGANIZE
ALTER INDEX NOM_INDEX ON NOM_TABLE.NOM_COLONNE REORGANIZE;
ALTER INDEX NOM_INDEX ON NOM_TABLE.NOM_COLONNE REBUILD;
Définitions prises sur le site linux-kheops.com
- fragmentation interne :
Le bloc logique est la plus petite unité d’allocation visible d’un système de fichiers à travers les appels systèmes. Cela signifie que le stockage d’un fichier dont la taille en octets est inférieure à la taille d’un bloc logique occupera sur disque la taille du bloc logique.De même, si la taille d’un fichier n’est pas divisible de façon entière par la taille du bloc logique (ie. taille_fichier modulo taille_bloc != 0), le système de fichiers allouera un nouveau bloc qui ne sera pas rempli entièrement, gaspillant ainsi de l’espace disque. Ce gaspillage d’espace disque est ce que l’on appelle la fragmentation interne. Remarquons que plus la taille du bloc logique est importante, plus importante sera la fragmentation interne. - fragmentation externe :
La fragmentation externe d’un fichier est le fait d’avoir les blocs constituant le fichier répartis de façon non contiguë sur tout le disque, réduisant ainsi les performances d’accès à ce fichier, du fait de l’augmentation des mouvements des têtes de lecture du disque nécessaire à l’accès à ce fichier.
Pas de commentaire reçu(s)
Laisser une réponse