Nous disposons de deux méthodes pour identifier le nombre de Ghost records.
Identification du nombre de Ghost records
La première consiste à consulter la colonne Ghost_record_count de la DMV sys.dm_db_index_physical_stats. (Cette DMV devra être appelée avec le paramètre DETAILED).
Exemple :
Considérons une table T1 comprenant un index NonCluster sur la Col1, un autre sur la Col2 et contenant 5 enregistrements : Figures 1 et 2.
SELECT * FROM dbo.T_Ghost
(((IMG6243)))
Figure 1
(((IMG6244)))
Figure 2
Vérifions tout d’abord que la table ne contient aucun Ghost Record : Figure 3
SELECT OBJECT_NAME(OBJECT_ID) ObjectName, index_id, index_type_desc, page_count, record_count, Ghost_record_count
FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID(‘dbo.T_Ghost’),NULL,NULL,’DETAILED’)
(((IMG6245)))
Figure 3
Nous supprimons 2 enregistrements, en laissant volontairement la transaction ouverte afin de contrôler la présence des Ghost Record (en effet, je vous rappelle que le Ghost Cleanup ne peut supprimer les enregistrements tant qu’ils sont lockés): Figure 4
BEGIN TRAN
DELETE FROM dbo.T_Ghost WHERE col1 < 3
Nous avons bien maintenant 2 Ghost Record par page d’index:
SELECT OBJECT_NAME(OBJECT_ID) ObjectName, index_id, record_count, Ghost_record_count
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID(‘dbo.T1’),NULL, NULL, ‘DETAILED’)
(((IMG6246)))
Figure 4
Et nous corroborons ce que nous avons vu précédemment : seules les pages d’index sont concernées, il n’y a aucun Ghost record pour le Heap (index_id = 0).
Nous allons maintenant valider la transaction : les Ghost records disparaissent : Figure 5
(((IMG6247)))
Figure 5
La deuxième méthode consiste à activer le trace flag 2514, puis à lancer un DBCC CHECKTABLE sur la table souhaité. Le trace flag va ajouter l’information du nombre de Ghost record à la sortie habituelle de la commande DBCC CHECKTABLE : Figure 6.
(((IMG6248)))
Figure 6
La différence néanmoins entre cette méthode et l’appel à la dmv sys.dm_db_index_physical_stats est que le traceflag 2514 n’affiche pas les Ghost records des transactions en cours, c’est-à-dire non validées (ou annulées). Il n’affiche que le nombre de Ghost records devant être détruits lors du prochain passage du Ghost Cleanup.
Il est important de pouvoir contrôler le nombre de Ghost records dans certaines situations, par exemple lorsque que nous nous trouvons confronter à une base qui grossit de manière constante, malgré les purges régulières qui sont faites. J’ai personnellement rencontrés ce cas, sur une version SQL Server 2008 SP1. Une base qui était sensée rester constante en taille, suivait en réalité une croissance régulière de 35GB par mois. Après recherche, une table en particulier contenait des dizaines de millions de Ghost records, identifiés grâce à notre fameuse DMV sys.dm_db_index_physical_stats vue dans notre précédent exemple.
Ce petit problème nous amènes à aller un peu plus en avant dans la découverte du Ghost Cleanup
Téléchargez cette ressource
SIEM & PME : Comment construire la boîte noire de votre SI ?
Passez à la cybersécurité proactive, transformez la collecte et l’analyse des logs en un bouclier dynamique contre les cybermenaces. Découvrez comment mettre en place une approche SIEM modulaire, évolutive et accessible, pour anticiper, détecter et réagir efficacement aux attaques.
Les articles les plus consultés
- Afficher les icônes cachées dans la barre de notification
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Cybersécurité Active Directory et les attaques de nouvelle génération
- IBM i célèbre ses 25 ans
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
Les plus consultés sur iTPro.fr
- De l’inventaire à l’action : l’Asset Management au service d’un Numérique plus responsable
- IA et bureaucratie : la complexité qui grève les projets
- IA dans les services financiers : priorité stratégique, mais passage à l’échelle sous tension
- Data streaming : le nouveau socle stratégique de l’IA en entreprise
Articles les + lus
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
À la une de la chaîne Tech
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
